2024 Q4 Form 10-Q Financial Statement
#000109269924000074 Filed on October 24, 2024
Income Statement
Concept | 2024 Q4 | 2024 Q3 |
---|---|---|
Revenue | $163.7M | |
YoY Change | 20.66% | |
Cost Of Revenue | $51.62M | |
YoY Change | 13.41% | |
Gross Profit | $112.1M | |
YoY Change | 24.32% | |
Gross Profit Margin | 68.46% | |
Selling, General & Admin | $64.73M | |
YoY Change | 24.01% | |
% of Gross Profit | 57.76% | |
Research & Development | $15.29M | |
YoY Change | 12.79% | |
% of Gross Profit | 13.65% | |
Depreciation & Amortization | $11.10M | |
YoY Change | 30.62% | |
% of Gross Profit | 9.91% | |
Operating Expenses | $86.49M | |
YoY Change | 24.37% | |
Operating Profit | $25.57M | |
YoY Change | 24.14% | |
Interest Expense | $3.781M | |
YoY Change | 40.04% | |
% of Operating Profit | 14.79% | |
Other Income/Expense, Net | $3.778M | |
YoY Change | 121.97% | |
Pretax Income | $29.35M | |
YoY Change | 31.6% | |
Income Tax | $5.889M | |
% Of Pretax Income | 20.07% | |
Net Earnings | $23.46M | |
YoY Change | 39.29% | |
Net Earnings / Revenue | 14.33% | |
Basic Earnings Per Share | $0.63 | |
Diluted Earnings Per Share | $0.62 | |
COMMON SHARES | ||
Basic Shares Outstanding | 37.57M shares | 37.10M shares |
Diluted Shares Outstanding | 38.00M shares |
Balance Sheet
Concept | 2024 Q4 | 2024 Q3 |
---|---|---|
SHORT-TERM ASSETS | ||
Cash & Short-Term Investments | $205.8M | |
YoY Change | -14.01% | |
Cash & Equivalents | $198.8M | |
Short-Term Investments | $6.931M | |
Other Short-Term Assets | $18.64M | |
YoY Change | 18.4% | |
Inventory | ||
Prepaid Expenses | ||
Receivables | $55.57M | |
Other Receivables | $0.00 | |
Total Short-Term Assets | $344.6M | |
YoY Change | -4.2% | |
LONG-TERM ASSETS | ||
Property, Plant & Equipment | $36.15M | |
YoY Change | -0.17% | |
Goodwill | $423.5M | |
YoY Change | 68.03% | |
Intangibles | ||
YoY Change | ||
Long-Term Investments | ||
YoY Change | ||
Other Assets | $1.240M | |
YoY Change | 5.35% | |
Total Long-Term Assets | $658.7M | |
YoY Change | 54.01% | |
TOTAL ASSETS | ||
Total Short-Term Assets | $344.6M | |
Total Long-Term Assets | $658.7M | |
Total Assets | $1.003B | |
YoY Change | 27.42% | |
SHORT-TERM LIABILITIES | ||
YoY Change | ||
Accounts Payable | $8.107M | |
YoY Change | 30.86% | |
Accrued Expenses | $8.968M | |
YoY Change | 0.76% | |
Deferred Revenue | $78.88M | |
YoY Change | 9.78% | |
Short-Term Debt | $0.00 | |
YoY Change | ||
Long-Term Debt Due | ||
YoY Change | ||
Total Short-Term Liabilities | $146.3M | |
YoY Change | 10.13% | |
LONG-TERM LIABILITIES | ||
Long-Term Debt | $0.00 | |
YoY Change | ||
Other Long-Term Liabilities | $640.0K | |
YoY Change | -96.32% | |
Total Long-Term Liabilities | $640.0K | |
YoY Change | -96.32% | |
TOTAL LIABILITIES | ||
Total Short-Term Liabilities | $146.3M | |
Total Long-Term Liabilities | $640.0K | |
Total Liabilities | $173.9M | |
YoY Change | 8.33% | |
SHAREHOLDERS EQUITY | ||
Retained Earnings | $318.5M | |
YoY Change | 32.71% | |
Common Stock | $611.8M | |
YoY Change | 17.57% | |
Preferred Stock | ||
YoY Change | ||
Treasury Stock (at cost) | ||
YoY Change | ||
Treasury Stock Shares | ||
Shareholders Equity | $829.4M | |
YoY Change | ||
Total Liabilities & Shareholders Equity | $1.003B | |
YoY Change | 27.42% |
Cashflow Statement
Concept | 2024 Q4 | 2024 Q3 |
---|---|---|
OPERATING ACTIVITIES | ||
Net Income | $23.46M | |
YoY Change | 39.29% | |
Depreciation, Depletion And Amortization | $11.10M | |
YoY Change | 30.62% | |
Cash From Operating Activities | $53.33M | |
YoY Change | 21.76% | |
INVESTING ACTIVITIES | ||
Capital Expenditures | $5.240M | |
YoY Change | -8.07% | |
Acquisitions | ||
YoY Change | ||
Other Investing Activities | -$93.06M | |
YoY Change | 34.09% | |
Cash From Investing Activities | -$98.30M | |
YoY Change | 30.89% | |
FINANCING ACTIVITIES | ||
Cash Dividend Paid | ||
YoY Change | ||
Common Stock Issuance & Retirement, Net | ||
YoY Change | ||
Debt Paid & Issued, Net | ||
YoY Change | ||
Cash From Financing Activities | 2.253M | |
YoY Change | 125.3% | |
NET CHANGE | ||
Cash From Operating Activities | 53.33M | |
Cash From Investing Activities | -98.30M | |
Cash From Financing Activities | 2.253M | |
Net Change In Cash | -42.72M | |
YoY Change | 40.97% | |
FREE CASH FLOW | ||
Cash From Operating Activities | $53.33M | |
Capital Expenditures | $5.240M | |
Free Cash Flow | $48.09M | |
YoY Change | 26.22% |
Facts In Submission
Frame | Concept Type | Concept / XBRL Key | Value | Unit |
---|---|---|---|---|
dei |
Document Quarterly Report
DocumentQuarterlyReport
|
true | ||
dei |
Document Period End Date
DocumentPeriodEndDate
|
2024-09-30 | ||
dei |
Document Transition Report
DocumentTransitionReport
|
false | ||
dei |
Entity Registrant Name
EntityRegistrantName
|
SPS COMMERCE, INC. | ||
dei |
Entity Incorporation State Country Code
EntityIncorporationStateCountryCode
|
DE | ||
dei |
Entity Tax Identification Number
EntityTaxIdentificationNumber
|
41-2015127 | ||
dei |
Entity Address City Or Town
EntityAddressCityOrTown
|
Minneapolis | ||
dei |
Entity Address State Or Province
EntityAddressStateOrProvince
|
MN | ||
dei |
Entity Address Postal Zip Code
EntityAddressPostalZipCode
|
55402 | ||
dei |
City Area Code
CityAreaCode
|
612 | ||
dei |
Local Phone Number
LocalPhoneNumber
|
435-9400 | ||
dei |
Security12b Title
Security12bTitle
|
Common Stock, par value $0.001 per share | ||
dei |
Trading Symbol
TradingSymbol
|
SPSC | ||
dei |
Security Exchange Name
SecurityExchangeName
|
NASDAQ | ||
dei |
Entity Current Reporting Status
EntityCurrentReportingStatus
|
Yes | ||
dei |
Entity Interactive Data Current
EntityInteractiveDataCurrent
|
Yes | ||
dei |
Entity Filer Category
EntityFilerCategory
|
Large Accelerated Filer | ||
CY2023Q3 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
36728000 | shares |
CY2024Q3 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37996000 | shares |
CY2023Q3 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37584000 | shares |
us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37785000 | shares | |
us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37417000 | shares | |
CY2023Q3 | us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
10780000 | usd |
CY2023Q3 | us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
705000 | usd |
CY2023Q3 | us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
344000 | usd |
dei |
Entity Address Address Line2
EntityAddressAddressLine2
|
Suite 1000 | ||
dei |
Entity Small Business
EntitySmallBusiness
|
false | ||
dei |
Entity Emerging Growth Company
EntityEmergingGrowthCompany
|
false | ||
dei |
Entity Shell Company
EntityShellCompany
|
false | ||
CY2023Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
16842000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-2966000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
570000 | usd |
CY2023Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
626844000 | usd |
CY2024Q2 | us-gaap |
Stockholders Equity
StockholdersEquity
|
703421000 | usd |
CY2024Q3 | us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
9996000 | usd |
CY2024Q3 | us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
1884000 | usd |
CY2024Q3 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
|
296357 | shares |
us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
39438000 | usd | |
us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
76575000 | usd | |
us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
64275000 | usd | |
us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
15648000 | usd | |
us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
11118000 | usd | |
CY2024Q3 | us-gaap |
Operating Expenses
OperatingExpenses
|
86491000 | usd |
CY2023Q3 | us-gaap |
Operating Expenses
OperatingExpenses
|
69541000 | usd |
us-gaap |
Operating Expenses
OperatingExpenses
|
247590000 | usd | |
CY2024Q3 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
25571000 | usd |
CY2023Q3 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
20599000 | usd |
CY2024Q3 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
3778000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
3332000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
84000 | usd |
CY2024Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
829365000 | usd |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
107344000 | usd |
dei |
Document Type
DocumentType
|
10-Q | ||
dei |
Entity File Number
EntityFileNumber
|
001-34702 | ||
CY2024Q3 | us-gaap |
Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
|
0 | shares |
CY2022Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
70179000 | usd |
CY2023Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
135661000 | usd |
CY2024Q3 | us-gaap |
Cost Of Revenue
CostOfRevenue
|
51624000 | usd |
CY2023Q3 | us-gaap |
Cost Of Revenue
CostOfRevenue
|
45521000 | usd |
CY2024Q3 | us-gaap |
Gross Profit
GrossProfit
|
112062000 | usd |
CY2023Q3 | us-gaap |
Gross Profit
GrossProfit
|
90140000 | usd |
CY2024Q3 | us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
37577000 | usd |
CY2023Q3 | us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
30289000 | usd |
CY2024Q3 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
15292000 | usd |
CY2023Q3 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
13558000 | usd |
CY2024Q3 | us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
27152000 | usd |
CY2023Q3 | us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
21906000 | usd |
CY2024Q3 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
6470000 | usd |
CY2023Q3 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
3788000 | usd |
CY2024Q3 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
29349000 | usd |
CY2023Q3 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
22301000 | usd |
CY2024Q3 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
5889000 | usd |
CY2023Q3 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
5459000 | usd |
CY2024Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23460000 | usd |
CY2023Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
16842000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
3332000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
28000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
190000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
84000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
570000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
|
137000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
248000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
412000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
|
3168000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
|
-2808000 | usd |
CY2024Q3 | us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
26628000 | usd |
CY2023Q3 | us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
14034000 | usd |
CY2024Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.63 | |
CY2023Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.46 | |
CY2023Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.45 | |
dei |
Document Period End Date
DocumentPeriodEndDate
|
2024-09-30 | ||
dei |
Entity Central Index Key
EntityCentralIndexKey
|
0001092699 | ||
dei |
Current Fiscal Year End Date
CurrentFiscalYearEndDate
|
--12-31 | ||
dei |
Document Fiscal Year Focus
DocumentFiscalYearFocus
|
2024 | ||
dei |
Document Fiscal Period Focus
DocumentFiscalPeriodFocus
|
Q3 | ||
dei |
Amendment Flag
AmendmentFlag
|
false | ||
dei |
Security Exchange Name
SecurityExchangeName
|
NASDAQ | ||
dei |
Entity Address Address Line1
EntityAddressAddressLine1
|
333 South Seventh Street | ||
CY2024Q4 | dei |
Entity Common Stock Shares Outstanding
EntityCommonStockSharesOutstanding
|
37568061 | shares |
CY2024Q3 | us-gaap |
Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
|
198842000 | usd |
CY2023Q4 | us-gaap |
Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
|
219081000 | usd |
CY2024Q3 | us-gaap |
Short Term Investments
ShortTermInvestments
|
6931000 | usd |
CY2023Q4 | us-gaap |
Short Term Investments
ShortTermInvestments
|
56359000 | usd |
CY2024Q3 | us-gaap |
Accounts Receivable Gross Current
AccountsReceivableGrossCurrent
|
60044000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-2966000 | usd |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-886000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-1446000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
363000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
459000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1089000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1376000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
|
537000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
|
390000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1169000 | usd | |
us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
58088000 | usd | |
us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
45574000 | usd | |
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.60 | ||
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.28 | ||
CY2024Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.62 | |
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.57 | ||
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.25 | ||
CY2024Q3 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
37447000 | shares |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
37192000 | shares | |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
36584000 | shares | |
CY2023Q2 | us-gaap |
Stockholders Equity
StockholdersEquity
|
600981000 | usd |
CY2023Q3 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
412000 | usd |
CY2024Q3 | us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
453000 | usd |
CY2024Q3 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
84000 | usd |
CY2024Q3 | us-gaap |
Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
|
87067000 | usd |
CY2024Q3 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
248000 | usd |
us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
34192000 | usd | |
us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
4481000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
46813000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-1446000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1376000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1169000 | usd | |
CY2023Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
626844000 | usd |
CY2023Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
667475000 | usd |
us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
40075000 | usd | |
us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
4198000 | usd | |
us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
5672000 | usd | |
us-gaap |
Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
|
91424000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-886000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1089000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1610000 | usd | |
CY2024Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
829365000 | usd |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
46813000 | usd | |
us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
-9918000 | usd | |
us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
-11906000 | usd | |
us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
14010000 | usd | |
us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
13964000 | usd | |
us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
15648000 | usd | |
us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
11118000 | usd | |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
6239000 | usd | |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
4004000 | usd | |
us-gaap |
Share Based Compensation
ShareBasedCompensation
|
42264000 | usd | |
CY2023Q4 | us-gaap |
Accounts Receivable Gross Current
AccountsReceivableGrossCurrent
|
50160000 | usd |
CY2024Q3 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
4474000 | usd |
CY2023Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
3320000 | usd |
CY2024Q3 | us-gaap |
Accounts Receivable Net Current
AccountsReceivableNetCurrent
|
55570000 | usd |
CY2023Q4 | us-gaap |
Accounts Receivable Net Current
AccountsReceivableNetCurrent
|
46840000 | usd |
CY2024Q3 | us-gaap |
Deferred Costs Current
DeferredCostsCurrent
|
64665000 | usd |
CY2023Q4 | us-gaap |
Deferred Costs Current
DeferredCostsCurrent
|
62403000 | usd |
CY2024Q3 | us-gaap |
Other Assets Current
OtherAssetsCurrent
|
18639000 | usd |
CY2023Q4 | us-gaap |
Other Assets Current
OtherAssetsCurrent
|
16758000 | usd |
CY2024Q3 | us-gaap |
Assets Current
AssetsCurrent
|
344647000 | usd |
CY2023Q4 | us-gaap |
Assets Current
AssetsCurrent
|
401441000 | usd |
CY2024Q3 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
36148000 | usd |
CY2023Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
36043000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
|
8412000 | usd |
CY2023Q4 | us-gaap |
Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
|
7862000 | usd |
CY2024Q3 | us-gaap |
Goodwill
Goodwill
|
423508000 | usd |
CY2023Q4 | us-gaap |
Goodwill
Goodwill
|
249176000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
168131000 | usd |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
107344000 | usd |
CY2024Q3 | us-gaap |
Deferred Costs
DeferredCosts
|
20802000 | usd |
CY2023Q4 | us-gaap |
Deferred Costs
DeferredCosts
|
20347000 | usd |
CY2024Q3 | us-gaap |
Deferred Income Tax Assets Net
DeferredIncomeTaxAssetsNet
|
412000 | usd |
CY2023Q4 | us-gaap |
Deferred Income Tax Assets Net
DeferredIncomeTaxAssetsNet
|
505000 | usd |
CY2024Q3 | us-gaap |
Other Assets Noncurrent
OtherAssetsNoncurrent
|
1240000 | usd |
CY2023Q4 | us-gaap |
Other Assets Noncurrent
OtherAssetsNoncurrent
|
1126000 | usd |
CY2024Q3 | us-gaap |
Assets
Assets
|
1003300000 | usd |
CY2023Q4 | us-gaap |
Assets
Assets
|
823844000 | usd |
CY2024Q3 | us-gaap |
Accounts Payable Current
AccountsPayableCurrent
|
8107000 | usd |
CY2023Q4 | us-gaap |
Accounts Payable Current
AccountsPayableCurrent
|
7420000 | usd |
CY2024Q3 | us-gaap |
Employee Related Liabilities Current
EmployeeRelatedLiabilitiesCurrent
|
46010000 | usd |
CY2023Q4 | us-gaap |
Employee Related Liabilities Current
EmployeeRelatedLiabilitiesCurrent
|
41588000 | usd |
CY2024Q3 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
8968000 | usd |
CY2023Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
8014000 | usd |
CY2024Q3 | us-gaap |
Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
|
78883000 | usd |
CY2023Q4 | us-gaap |
Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
|
69187000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
|
4363000 | usd |
CY2023Q4 | us-gaap |
Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
|
4460000 | usd |
CY2024Q3 | us-gaap |
Liabilities Current
LiabilitiesCurrent
|
146331000 | usd |
CY2023Q4 | us-gaap |
Liabilities Current
LiabilitiesCurrent
|
130669000 | usd |
CY2024Q3 | us-gaap |
Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
|
6550000 | usd |
CY2023Q4 | us-gaap |
Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
|
6930000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
|
8807000 | usd |
CY2023Q4 | us-gaap |
Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
|
9569000 | usd |
CY2024Q3 | us-gaap |
Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
|
11607000 | usd |
CY2023Q4 | us-gaap |
Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
|
8972000 | usd |
CY2024Q3 | us-gaap |
Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
|
640000 | usd |
CY2023Q4 | us-gaap |
Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
|
229000 | usd |
CY2024Q3 | us-gaap |
Liabilities
Liabilities
|
173935000 | usd |
CY2023Q4 | us-gaap |
Liabilities
Liabilities
|
156369000 | usd |
CY2024Q3 | us-gaap |
Commitments And Contingencies
CommitmentsAndContingencies
|
usd | |
CY2023Q4 | us-gaap |
Commitments And Contingencies
CommitmentsAndContingencies
|
usd | |
CY2023Q4 | us-gaap |
Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
|
0.001 | |
CY2024Q3 | us-gaap |
Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
|
0.001 | |
CY2024Q3 | us-gaap |
Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
|
5000000 | shares |
CY2023Q4 | us-gaap |
Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
|
5000000 | shares |
CY2023Q4 | us-gaap |
Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
|
0 | shares |
CY2023Q4 | us-gaap |
Preferred Stock Shares Issued
PreferredStockSharesIssued
|
0 | shares |
CY2024Q3 | us-gaap |
Preferred Stock Shares Issued
PreferredStockSharesIssued
|
0 | shares |
CY2024Q3 | us-gaap |
Preferred Stock Value
PreferredStockValue
|
0 | usd |
CY2023Q4 | us-gaap |
Preferred Stock Value
PreferredStockValue
|
0 | usd |
CY2023Q4 | us-gaap |
Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
|
0.001 | |
CY2024Q3 | us-gaap |
Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
|
0.001 | |
CY2023Q4 | us-gaap |
Common Stock Shares Authorized
CommonStockSharesAuthorized
|
110000000 | shares |
CY2024Q3 | us-gaap |
Common Stock Shares Authorized
CommonStockSharesAuthorized
|
110000000 | shares |
CY2024Q3 | us-gaap |
Common Stock Shares Issued
CommonStockSharesIssued
|
39495411 | shares |
CY2023Q4 | us-gaap |
Common Stock Shares Issued
CommonStockSharesIssued
|
38971146 | shares |
CY2024Q3 | us-gaap |
Common Stock Shares Outstanding
CommonStockSharesOutstanding
|
37566443 | shares |
CY2023Q4 | us-gaap |
Common Stock Shares Outstanding
CommonStockSharesOutstanding
|
36820048 | shares |
CY2024Q3 | us-gaap |
Common Stock Value
CommonStockValue
|
39000 | usd |
CY2023Q4 | us-gaap |
Common Stock Value
CommonStockValue
|
39000 | usd |
CY2024Q3 | us-gaap |
Treasury Stock Common Shares
TreasuryStockCommonShares
|
1928968 | shares |
CY2023Q4 | us-gaap |
Treasury Stock Common Shares
TreasuryStockCommonShares
|
2151098 | shares |
CY2024Q3 | us-gaap |
Treasury Stock Common Value
TreasuryStockCommonValue
|
99748000 | usd |
CY2023Q4 | us-gaap |
Treasury Stock Common Value
TreasuryStockCommonValue
|
128892000 | usd |
CY2024Q3 | us-gaap |
Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
|
611719000 | usd |
CY2023Q4 | us-gaap |
Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
|
537061000 | usd |
CY2024Q3 | us-gaap |
Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
|
318540000 | usd |
CY2023Q4 | us-gaap |
Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
|
259045000 | usd |
CY2024Q3 | us-gaap |
Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
|
-1185000 | usd |
CY2023Q4 | us-gaap |
Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
|
222000 | usd |
CY2024Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
829365000 | usd |
CY2023Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
667475000 | usd |
CY2024Q3 | us-gaap |
Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
|
1003300000 | usd |
CY2023Q4 | us-gaap |
Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
|
823844000 | usd |
CY2024Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
163686000 | usd |
us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
466858000 | usd | |
us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
391945000 | usd | |
us-gaap |
Cost Of Revenue
CostOfRevenue
|
155129000 | usd | |
us-gaap |
Cost Of Revenue
CostOfRevenue
|
133029000 | usd | |
us-gaap |
Gross Profit
GrossProfit
|
311729000 | usd | |
us-gaap |
Gross Profit
GrossProfit
|
258916000 | usd | |
us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
109700000 | usd | |
us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
89722000 | usd | |
us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
45667000 | usd | |
us-gaap |
Operating Expenses
OperatingExpenses
|
204553000 | usd | |
us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
64139000 | usd | |
us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
54363000 | usd | |
CY2023Q3 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
1702000 | usd |
us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
10966000 | usd | |
us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
4859000 | usd | |
us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
75105000 | usd | |
us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
59222000 | usd | |
us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
15610000 | usd | |
us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
12409000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
46813000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-886000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-1446000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
363000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
459000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1089000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1376000 | usd | |
CY2024Q3 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
|
83000 | usd |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
|
390000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1610000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1169000 | usd | |
us-gaap |
Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
|
-1407000 | usd | |
us-gaap |
Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
|
-1239000 | usd | |
us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
58088000 | usd | |
us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
45574000 | usd | |
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.60 | ||
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.28 | ||
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.57 | ||
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.25 | ||
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
37192000 | shares | |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
36584000 | shares | |
CY2024Q3 | us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
453000 | usd |
CY2024Q3 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
84000 | usd |
CY2024Q3 | us-gaap |
Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
|
87067000 | usd |
CY2024Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23460000 | usd |
CY2022Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
537073000 | usd |
us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
34192000 | usd | |
us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
5524000 | usd | |
us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
4481000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
46813000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-1446000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1376000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1169000 | usd | |
CY2023Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
626844000 | usd |
CY2023Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
667475000 | usd |
us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
40075000 | usd | |
us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
4198000 | usd | |
us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
5672000 | usd | |
us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
37567000 | usd | |
us-gaap |
Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
|
91424000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-886000 | usd | |
us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
1089000 | usd | |
us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
1610000 | usd | |
CY2024Q3 | us-gaap |
Stockholders Equity
StockholdersEquity
|
829365000 | usd |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
46813000 | usd | |
us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
-9918000 | usd | |
us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
-11906000 | usd | |
us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
14010000 | usd | |
us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
15648000 | usd | |
us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
11118000 | usd | |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
6239000 | usd | |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
4004000 | usd | |
us-gaap |
Share Based Compensation
ShareBasedCompensation
|
42264000 | usd | |
us-gaap |
Other Noncash Income Expense
OtherNoncashIncomeExpense
|
925000 | usd | |
us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
11456000 | usd | |
us-gaap |
Share Based Compensation
ShareBasedCompensation
|
36097000 | usd | |
us-gaap |
Other Noncash Income Expense
OtherNoncashIncomeExpense
|
925000 | usd | |
us-gaap |
Other Noncash Income Expense
OtherNoncashIncomeExpense
|
-1711000 | usd | |
us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
11456000 | usd | |
us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
8800000 | usd | |
us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
2240000 | usd | |
us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
7543000 | usd | |
us-gaap |
Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
|
2258000 | usd | |
us-gaap |
Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
|
-2814000 | usd | |
us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
665000 | usd | |
us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
-5289000 | usd | |
us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
458000 | usd | |
us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
8073000 | usd | |
us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
842000 | usd | |
us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
-169000 | usd | |
us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
5424000 | usd | |
us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
10042000 | usd | |
spsc |
Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
|
-1412000 | usd | |
spsc |
Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
|
-1417000 | usd | |
us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
116836000 | usd | |
us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
99512000 | usd | |
us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
13832000 | usd | |
us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
15467000 | usd | |
us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
85759000 | usd | |
us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
102763000 | usd | |
us-gaap |
Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
|
136765000 | usd | |
us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
147401000 | usd | |
us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
70218000 | usd | |
us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-110227000 | usd | |
us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-93448000 | usd | |
us-gaap |
Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
|
37567000 | usd | |
us-gaap |
Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
|
0 | usd | |
us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
4198000 | usd | |
us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
5524000 | usd | |
us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
5672000 | usd | |
us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
4481000 | usd | |
us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-27697000 | usd | |
us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
10005000 | usd | |
us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
849000 | usd | |
us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
-260000 | usd | |
us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
-20239000 | usd | |
us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
15809000 | usd | |
CY2022Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
162893000 | usd |
CY2024Q3 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
198842000 | usd |
CY2023Q3 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
178702000 | usd |
us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
2240000 | usd | |
us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
7543000 | usd | |
us-gaap |
Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
|
2258000 | usd | |
us-gaap |
Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
|
-2814000 | usd | |
us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
665000 | usd | |
us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
458000 | usd | |
us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
8073000 | usd | |
us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
842000 | usd | |
us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
-169000 | usd | |
us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
5424000 | usd | |
us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
10042000 | usd | |
spsc |
Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
|
-1412000 | usd | |
spsc |
Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
|
-1417000 | usd | |
us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
116836000 | usd | |
us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
99512000 | usd | |
us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
13832000 | usd | |
us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
15467000 | usd | |
us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
85759000 | usd | |
us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
102763000 | usd | |
us-gaap |
Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
|
136765000 | usd | |
us-gaap |
Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
|
95000000 | usd | |
us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
147401000 | usd | |
us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
70218000 | usd | |
us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-110227000 | usd | |
us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-93448000 | usd | |
us-gaap |
Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
|
37567000 | usd | |
us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
4198000 | usd | |
us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
5524000 | usd | |
us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
5672000 | usd | |
us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
4481000 | usd | |
us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-27697000 | usd | |
us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
10005000 | usd | |
us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
849000 | usd | |
us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
-260000 | usd | |
us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
-20239000 | usd | |
us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
15809000 | usd | |
CY2023Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
219081000 | usd |
CY2024Q3 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
198842000 | usd |
CY2023Q3 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
178702000 | usd |
us-gaap |
Use Of Estimates
UseOfEstimates
|
<div style="margin-top:12pt"><span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt;text-indent:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates.</span></div> | ||
us-gaap |
Use Of Estimates
UseOfEstimates
|
<div style="margin-top:12pt"><span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt;text-indent:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates.</span></div> | ||
CY2024Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
163686000 | usd |
CY2023Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
135661000 | usd |
us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
466858000 | usd | |
spsc |
Recurring Revenues Timing Of Billings Latest Period
RecurringRevenuesTimingOfBillingsLatestPeriod
|
P30D | ||
spsc |
Contract Term Maximum
ContractTermMaximum
|
P1Y | ||
spsc |
Set Up Fees Recognized Period
SetUpFeesRecognizedPeriod
|
P2Y | ||
CY2024Q3 | us-gaap |
Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
|
13500000 | usd |
CY2024Q3 | us-gaap |
Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
|
P12M | |
spsc |
Maximum Recognition Period For Miscellaneous One Time Fee
MaximumRecognitionPeriodForMiscellaneousOneTimeFee
|
P1Y | ||
us-gaap |
Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
|
61800000 | usd | |
us-gaap |
Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
|
52400000 | usd | |
CY2024Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
163686000 | usd |
CY2023Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
135661000 | usd |
us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
466858000 | usd | |
us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
391945000 | usd | |
spsc |
Recurring Revenues Timing Of Billings Latest Period
RecurringRevenuesTimingOfBillingsLatestPeriod
|
P30D | ||
spsc |
Contract Term Maximum
ContractTermMaximum
|
P1Y | ||
spsc |
Set Up Fees Recognized Period
SetUpFeesRecognizedPeriod
|
P2Y | ||
CY2024Q3 | us-gaap |
Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
|
13500000 | usd |
CY2024Q3 | us-gaap |
Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
|
P12M | |
spsc |
Maximum Recognition Period For Miscellaneous One Time Fee
MaximumRecognitionPeriodForMiscellaneousOneTimeFee
|
P1Y | ||
us-gaap |
Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
|
61800000 | usd | |
us-gaap |
Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
|
52400000 | usd | |
CY2024Q2 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
84928000 | usd |
CY2023Q2 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
75255000 | usd |
CY2024Q2 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
84928000 | usd |
CY2023Q2 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
75255000 | usd |
CY2023Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
82750000 | usd |
CY2024Q3 | spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
22532000 | usd |
CY2023Q3 | spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
20094000 | usd |
spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
67483000 | usd | |
spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
57632000 | usd | |
CY2024Q3 | spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
21993000 | usd |
CY2023Q3 | spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
16303000 | usd |
spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
64766000 | usd | |
spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
48765000 | usd | |
CY2024Q3 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
85467000 | usd |
CY2023Q3 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
79046000 | usd |
CY2024Q3 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
85467000 | usd |
CY2023Q3 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
79046000 | usd |
CY2024Q3 | us-gaap |
Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
|
142631000 | usd |
CY2023Q4 | us-gaap |
Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
|
216898000 | usd |
CY2023Q4 | us-gaap |
Debt Securities Available For Sale Accumulated Gross Unrealized Gain Loss Before Tax
DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
|
694000 | usd |
CY2023Q4 | us-gaap |
Available For Sale Securities Debt Securities
AvailableForSaleSecuritiesDebtSecurities
|
217592000 | usd |
CY2023Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
82750000 | usd |
CY2024Q3 | spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
22532000 | usd |
CY2023Q3 | spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
20094000 | usd |
spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
67483000 | usd | |
spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
57632000 | usd | |
CY2024Q3 | spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
21993000 | usd |
CY2023Q3 | spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
16303000 | usd |
spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
48765000 | usd | |
CY2023Q3 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
79046000 | usd |
CY2024Q3 | us-gaap |
Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
|
142631000 | usd |
CY2024Q3 | us-gaap |
Debt Securities Available For Sale Accumulated Gross Unrealized Gain Loss Before Tax
DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
|
0 | usd |
CY2024Q3 | us-gaap |
Available For Sale Securities Debt Securities
AvailableForSaleSecuritiesDebtSecurities
|
142631000 | usd |
CY2023Q4 | us-gaap |
Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
|
216898000 | usd |
CY2023Q4 | us-gaap |
Debt Securities Available For Sale Accumulated Gross Unrealized Gain Loss Before Tax
DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
|
694000 | usd |
CY2023Q4 | us-gaap |
Available For Sale Securities Debt Securities
AvailableForSaleSecuritiesDebtSecurities
|
217592000 | usd |
CY2023Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
3320000 | usd |
CY2022Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
3066000 | usd |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
4004000 | usd | |
us-gaap |
Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
|
5085000 | usd | |
us-gaap |
Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
|
3993000 | usd | |
CY2024Q3 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
4474000 | usd |
CY2024Q3 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
131992000 | usd |
CY2023Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
121151000 | usd |
CY2024Q3 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
95844000 | usd |
CY2023Q4 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
85108000 | usd |
CY2024Q3 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
36148000 | usd |
CY2023Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
36043000 | usd |
us-gaap |
Goodwill Foreign Currency Translation Gain Loss
GoodwillForeignCurrencyTranslationGainLoss
|
-649000 | usd | |
CY2024Q3 | us-gaap |
Goodwill
Goodwill
|
423508000 | usd |
CY2023Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
3320000 | usd |
CY2022Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
3066000 | usd |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
6239000 | usd | |
us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
4004000 | usd | |
us-gaap |
Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
|
5085000 | usd | |
us-gaap |
Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
|
3993000 | usd | |
CY2024Q3 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
4474000 | usd |
CY2023Q3 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
3077000 | usd |
CY2024Q3 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
131992000 | usd |
CY2023Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
121151000 | usd |
CY2024Q3 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
95844000 | usd |
CY2023Q4 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
85108000 | usd |
CY2024Q3 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
36148000 | usd |
CY2023Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
36043000 | usd |
CY2023Q4 | us-gaap |
Goodwill
Goodwill
|
249176000 | usd |
us-gaap |
Goodwill Acquired During Period
GoodwillAcquiredDuringPeriod
|
173164000 | usd | |
us-gaap |
Goodwill Foreign Currency Translation Gain Loss
GoodwillForeignCurrencyTranslationGainLoss
|
-649000 | usd | |
us-gaap |
Goodwill Purchase Accounting Adjustments
GoodwillPurchaseAccountingAdjustments
|
1817000 | usd | |
CY2024Q3 | us-gaap |
Goodwill
Goodwill
|
423508000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
231941000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
63664000 | usd |
CY2024Q3 | spsc |
Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
|
-146000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
168131000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
|
P6Y4M24D | |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
154071000 | usd |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
47766000 | usd |
CY2023Q4 | spsc |
Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
|
1039000 | usd |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
|
P6Y1M6D | |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Remainder Of Fiscal Year
FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear
|
7231000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
|
28792000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
|
27314000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
|
25974000 | usd |
CY2024Q3 | spsc |
Finite Lived Intangible Asset Expected Amortization After Year Four
FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour
|
51032000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
168131000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
884000 | usd |
CY2023Q3 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
729000 | usd |
us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
2496000 | usd | |
us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
2306000 | usd | |
CY2024Q3 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
824000 | usd |
CY2023Q3 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
909000 | usd |
us-gaap |
Variable Lease Cost
VariableLeaseCost
|
2743000 | usd | |
us-gaap |
Variable Lease Cost
VariableLeaseCost
|
2787000 | usd | |
CY2024Q3 | us-gaap |
Lease Cost
LeaseCost
|
1708000 | usd |
CY2023Q3 | us-gaap |
Lease Cost
LeaseCost
|
1638000 | usd |
us-gaap |
Lease Cost
LeaseCost
|
5239000 | usd | |
us-gaap |
Lease Cost
LeaseCost
|
5093000 | usd | |
us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
3801000 | usd | |
us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
3835000 | usd | |
us-gaap |
Right Of Use Asset Obtained In Exchange For Operating Lease Liability
RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
|
2554000 | usd | |
us-gaap |
Right Of Use Asset Obtained In Exchange For Operating Lease Liability
RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
|
1072000 | usd | |
CY2024Q3 | spsc |
Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
|
-146000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
168131000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
|
P6Y4M24D | |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
154071000 | usd |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
47766000 | usd |
CY2023Q4 | spsc |
Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
|
1039000 | usd |
CY2023Q4 | us-gaap |
Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
|
P6Y1M6D | |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
|
28792000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Two
FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
|
27788000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
|
27314000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
|
25974000 | usd |
CY2024Q3 | spsc |
Finite Lived Intangible Asset Expected Amortization After Year Four
FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour
|
51032000 | usd |
CY2024Q3 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
168131000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
884000 | usd |
CY2023Q3 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
729000 | usd |
us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
2496000 | usd | |
us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
2306000 | usd | |
CY2024Q3 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
824000 | usd |
CY2023Q3 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
909000 | usd |
us-gaap |
Variable Lease Cost
VariableLeaseCost
|
2743000 | usd | |
us-gaap |
Variable Lease Cost
VariableLeaseCost
|
2787000 | usd | |
CY2024Q3 | us-gaap |
Lease Cost
LeaseCost
|
1708000 | usd |
CY2023Q3 | us-gaap |
Lease Cost
LeaseCost
|
1638000 | usd |
us-gaap |
Lease Cost
LeaseCost
|
5239000 | usd | |
us-gaap |
Lease Cost
LeaseCost
|
5093000 | usd | |
us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
3801000 | usd | |
us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
3835000 | usd | |
CY2024Q3 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P2Y7M6D | |
CY2023Q4 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P3Y1M6D | |
CY2024Q3 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.042 | |
CY2023Q4 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.040 | |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
|
5460000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
|
4784000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
|
1740000 | usd |
CY2024Q3 | spsc |
Lessee Operating Lease Liability To Be Paid After Year Three
LesseeOperatingLeaseLiabilityToBePaidAfterYearThree
|
240000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
|
13940000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
|
770000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Liability
OperatingLeaseLiability
|
13170000 | usd |
CY2024Q3 | us-gaap |
Purchase Obligation Future Minimum Payments Remainder Of Fiscal Year
PurchaseObligationFutureMinimumPaymentsRemainderOfFiscalYear
|
2890000 | usd |
CY2024Q3 | us-gaap |
Purchase Obligation Due In Next Twelve Months
PurchaseObligationDueInNextTwelveMonths
|
14187000 | usd |
CY2024Q3 | us-gaap |
Purchase Obligation Due In Second Year
PurchaseObligationDueInSecondYear
|
4692000 | usd |
CY2024Q3 | us-gaap |
Purchase Obligation
PurchaseObligation
|
21769000 | usd |
us-gaap |
Schedule Of Repurchase Agreements
ScheduleOfRepurchaseAgreements
|
Details of the programs and activity thereunder through <span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">September 30, 2024 were as follows:</span><div style="margin-top:12pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.293%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.142%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.843%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Effective Date</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Expiration Date</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Authorized for Repurchase</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Repurchased</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unused & Expired Share Repurchase Value</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Available for Future Repurchase</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022 Program</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">40,556 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">9,444 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024 Program</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2026</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">share</span><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">repurchase activity by period was as follows:</span><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Three Months Ended<br/>September 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Nine Months Ended<br/>September 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands, except shares and per share amounts)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Number of shares repurchased</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">456 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">205,331 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total share repurchased cost</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">84 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,567 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Average total cost per repurchased share</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">184.21 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">182.96 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> | ||
CY2024Q3 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
456 | shares |
CY2023Q3 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | shares |
us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
205331 | shares | |
us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | shares | |
CY2024Q3 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
84000 | usd |
CY2023Q3 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
0 | usd |
us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
37567000 | usd | |
CY2024Q3 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P2Y7M6D | |
CY2023Q4 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P3Y1M6D | |
CY2024Q3 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.042 | |
CY2023Q4 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.040 | |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Remainder Of Fiscal Year
LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear
|
1716000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
|
5460000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
|
4784000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
|
1740000 | usd |
CY2024Q3 | spsc |
Lessee Operating Lease Liability To Be Paid After Year Three
LesseeOperatingLeaseLiabilityToBePaidAfterYearThree
|
240000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
|
13940000 | usd |
CY2024Q3 | us-gaap |
Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
|
770000 | usd |
CY2024Q3 | us-gaap |
Operating Lease Liability
OperatingLeaseLiability
|
13170000 | usd |
CY2024Q3 | us-gaap |
Purchase Obligation Due In Second Year
PurchaseObligationDueInSecondYear
|
4692000 | usd |
CY2024Q3 | us-gaap |
Purchase Obligation
PurchaseObligation
|
21769000 | usd |
us-gaap |
Schedule Of Repurchase Agreements
ScheduleOfRepurchaseAgreements
|
Details of the programs and activity thereunder through <span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">September 30, 2024 were as follows:</span><div style="margin-top:12pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.293%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.142%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.843%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Effective Date</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Expiration Date</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Authorized for Repurchase</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Repurchased</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unused & Expired Share Repurchase Value</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Available for Future Repurchase</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022 Program</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">40,556 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">9,444 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024 Program</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2026</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">share</span><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">repurchase activity by period was as follows:</span><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Three Months Ended<br/>September 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Nine Months Ended<br/>September 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands, except shares and per share amounts)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Number of shares repurchased</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">456 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">205,331 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total share repurchased cost</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">84 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,567 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Average total cost per repurchased share</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">184.21 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">182.96 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> | ||
CY2024Q3 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
456 | shares |
CY2023Q3 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | shares |
us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
205331 | shares | |
us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | shares | |
CY2024Q3 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
84000 | usd |
CY2023Q3 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
0 | usd |
us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
37567000 | usd | |
us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
0 | usd | |
us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
0 | usd | |
CY2024Q3 | us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
184.21 | |
CY2023Q3 | us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
0 | |
us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
182.96 | ||
us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
0 | ||
CY2024Q3 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant
ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
|
12300000 | shares |
CY2024Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
10752000 | usd |
CY2023Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
11436000 | usd |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
42264000 | usd | |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
36097000 | usd | |
CY2024Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
10752000 | usd |
CY2023Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
11436000 | usd |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
42264000 | usd | |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
36097000 | usd | |
CY2024Q3 | us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
|
78900000 | usd |
us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized Period For Recognition1
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
|
P2Y6M | ||
CY2023Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
80.02 | |
us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
|
36993 | shares | |
us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
|
197.42 | ||
us-gaap |
Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
|
85364 | shares | |
us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
|
49.18 | ||
us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
|
2094 | shares | |
us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
|
158.63 | ||
CY2024Q3 | us-gaap |
Investment Income Net
InvestmentIncomeNet
|
2704000 | usd |
CY2023Q3 | us-gaap |
Investment Income Net
InvestmentIncomeNet
|
2635000 | usd |
us-gaap |
Investment Income Net
InvestmentIncomeNet
|
8377000 | usd | |
CY2024Q3 | us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
1077000 | usd |
CY2023Q3 | us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
98000 | usd |
CY2024Q3 | us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
184.21 | |
CY2023Q3 | us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
0 | |
us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
182.96 | ||
us-gaap |
Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
|
0 | ||
CY2024Q3 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant
ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
|
12300000 | shares |
CY2024Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
10752000 | usd |
CY2023Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
11436000 | usd |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
42264000 | usd | |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
36097000 | usd | |
CY2023Q3 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
11436000 | usd |
us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
36097000 | usd | |
CY2024Q3 | us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
|
78900000 | usd |
us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized Period For Recognition1
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
|
P2Y6M | ||
CY2023Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
|
346822 | shares |
CY2023Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
80.02 | |
us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
|
36993 | shares | |
us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
|
197.42 | ||
us-gaap |
Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
|
85364 | shares | |
us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
|
2094 | shares | |
us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
|
158.63 | ||
CY2024Q3 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
103.01 | |
CY2024Q3 | us-gaap |
Investment Income Net
InvestmentIncomeNet
|
2704000 | usd |
CY2023Q3 | us-gaap |
Investment Income Net
InvestmentIncomeNet
|
2635000 | usd |
us-gaap |
Investment Income Net
InvestmentIncomeNet
|
8377000 | usd | |
us-gaap |
Investment Income Net
InvestmentIncomeNet
|
5372000 | usd | |
CY2024Q3 | us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
1077000 | usd |
CY2023Q3 | us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
98000 | usd |
us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
2636000 | usd | |
us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
525000 | usd | |
CY2024Q3 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-3000 | usd |
CY2023Q3 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-1031000 | usd |
us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-47000 | usd | |
us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-1038000 | usd | |
CY2024Q3 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
3778000 | usd |
CY2023Q3 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
1702000 | usd |
us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
10966000 | usd | |
us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
4859000 | usd | |
us-gaap |
Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
|
2636000 | usd | |
CY2024Q3 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-3000 | usd |
CY2023Q3 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-1031000 | usd |
us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-47000 | usd | |
us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-1038000 | usd | |
CY2024Q3 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
3778000 | usd |
CY2023Q3 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
1702000 | usd |
us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
10966000 | usd | |
us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
4859000 | usd | |
CY2023Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
16842000 | usd |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Net Income Loss
NetIncomeLoss
|
46813000 | usd | |
CY2024Q3 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
37447000 | shares |
CY2023Q3 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
36728000 | shares |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
37192000 | shares | |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
36584000 | shares | |
CY2024Q3 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
145000 | shares |
CY2023Q3 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
256000 | shares |
us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
159000 | shares | |
us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
279000 | shares | |
CY2024Q3 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
404000 | shares |
CY2023Q3 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
600000 | shares |
us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
434000 | shares | |
us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
554000 | shares | |
CY2024Q3 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37996000 | shares |
CY2023Q3 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37584000 | shares |
us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37785000 | shares | |
us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37417000 | shares | |
CY2024Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.63 | |
CY2023Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.46 | |
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.60 | ||
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.28 | ||
CY2024Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.62 | |
CY2023Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.45 | |
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.57 | ||
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.25 | ||
CY2024Q3 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
130000 | shares |
CY2024Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23460000 | usd |
CY2023Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
16842000 | usd |
us-gaap |
Net Income Loss
NetIncomeLoss
|
59495000 | usd | |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
37192000 | shares | |
us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
36584000 | shares | |
CY2024Q3 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
145000 | shares |
CY2023Q3 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
256000 | shares |
us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
159000 | shares | |
us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
279000 | shares | |
CY2024Q3 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
404000 | shares |
CY2023Q3 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
600000 | shares |
us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
434000 | shares | |
us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
554000 | shares | |
CY2024Q3 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37996000 | shares |
CY2023Q3 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37584000 | shares |
us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37785000 | shares | |
us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
37417000 | shares | |
CY2024Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.63 | |
CY2023Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.46 | |
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.60 | ||
us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.28 | ||
CY2024Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.62 | |
CY2023Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.45 | |
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.57 | ||
us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.25 | ||
CY2024Q3 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
130000 | shares |
CY2023Q3 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
40000 | shares |
us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
118000 | shares | |
us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
43000 | shares | |
CY2023Q3 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
40000 | shares |
us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
43000 | shares | |
CY2024Q3 | ecd |
Non Rule10b51 Arr Adopted Flag
NonRule10b51ArrAdoptedFlag
|
false | |
CY2024Q3 | ecd |
Rule10b51 Arr Trmntd Flag
Rule10b51ArrTrmntdFlag
|
false | |
CY2024Q3 | ecd |
Non Rule10b51 Arr Trmntd Flag
NonRule10b51ArrTrmntdFlag
|
false |