0001092699-24-000012.txt : 20240221 0001092699-24-000012.hdr.sgml : 20240221 20240220190706 ACCESSION NUMBER: 0001092699-24-000012 CONFORMED SUBMISSION TYPE: 10-K PUBLIC DOCUMENT COUNT: 117 CONFORMED PERIOD OF REPORT: 20231231 FILED AS OF DATE: 20240221 DATE AS OF CHANGE: 20240220 FILER: COMPANY DATA: COMPANY CONFORMED NAME: SPS COMMERCE INC CENTRAL INDEX KEY: 0001092699 STANDARD INDUSTRIAL CLASSIFICATION: SERVICES-PREPACKAGED SOFTWARE [7372] ORGANIZATION NAME: 06 Technology IRS NUMBER: 411593154 STATE OF INCORPORATION: DE FISCAL YEAR END: 1231 FILING VALUES: FORM TYPE: 10-K SEC ACT: 1934 Act SEC FILE NUMBER: 001-34702 FILM NUMBER: 24655754 BUSINESS ADDRESS: STREET 1: 333 SOUTH SEVENTH STREET STREET 2: SUITE 1000 CITY: MINNEAPOLIS STATE: MN ZIP: 55402 BUSINESS PHONE: 612-435-9400 MAIL ADDRESS: STREET 1: 333 SOUTH SEVENTH STREET STREET 2: SUITE 1000 CITY: MINNEAPOLIS STATE: MN ZIP: 55402 10-K 1 spsc-20231231.htm 10-K spsc-20231231
00010926992023FYfalse00010926992023-01-012023-12-3100010926992023-06-30iso4217:USD00010926992024-02-13xbrli:shares00010926992023-12-3100010926992022-12-31iso4217:USDxbrli:shares00010926992022-01-012022-12-3100010926992021-01-012021-12-310001092699us-gaap:CommonStockMember2020-12-310001092699us-gaap:TreasuryStockCommonMember2020-12-310001092699us-gaap:AdditionalPaidInCapitalMember2020-12-310001092699us-gaap:RetainedEarningsMember2020-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2020-12-3100010926992020-12-310001092699us-gaap:AdditionalPaidInCapitalMember2021-01-012021-12-310001092699us-gaap:CommonStockMember2021-01-012021-12-310001092699us-gaap:TreasuryStockCommonMember2021-01-012021-12-310001092699us-gaap:RetainedEarningsMember2021-01-012021-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2021-01-012021-12-310001092699us-gaap:CommonStockMember2021-12-310001092699us-gaap:TreasuryStockCommonMember2021-12-310001092699us-gaap:AdditionalPaidInCapitalMember2021-12-310001092699us-gaap:RetainedEarningsMember2021-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2021-12-3100010926992021-12-310001092699us-gaap:AdditionalPaidInCapitalMember2022-01-012022-12-310001092699us-gaap:CommonStockMember2022-01-012022-12-310001092699us-gaap:TreasuryStockCommonMember2022-01-012022-12-310001092699us-gaap:RetainedEarningsMember2022-01-012022-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-01-012022-12-310001092699us-gaap:CommonStockMember2022-12-310001092699us-gaap:TreasuryStockCommonMember2022-12-310001092699us-gaap:AdditionalPaidInCapitalMember2022-12-310001092699us-gaap:RetainedEarningsMember2022-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-12-310001092699us-gaap:AdditionalPaidInCapitalMember2023-01-012023-12-310001092699us-gaap:CommonStockMember2023-01-012023-12-310001092699us-gaap:RetainedEarningsMember2023-01-012023-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-01-012023-12-310001092699us-gaap:CommonStockMember2023-12-310001092699us-gaap:TreasuryStockCommonMember2023-12-310001092699us-gaap:AdditionalPaidInCapitalMember2023-12-310001092699us-gaap:RetainedEarningsMember2023-12-310001092699us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-12-31spsc:segment0001092699spsc:InternallyDevelopedSoftwareMember2023-12-310001092699spsc:ComputerEquipmentAndSoftwareMember2023-12-310001092699srt:MinimumMemberspsc:OfficeEquipmentAndFurnitureMember2023-12-310001092699spsc:OfficeEquipmentAndFurnitureMembersrt:MaximumMember2023-12-310001092699us-gaap:CustomerRelationshipsMembersrt:MinimumMember2023-12-310001092699us-gaap:CustomerRelationshipsMembersrt:MaximumMember2023-12-310001092699srt:MinimumMemberus-gaap:TechnologyBasedIntangibleAssetsMember2023-12-310001092699srt:MaximumMemberus-gaap:TechnologyBasedIntangibleAssetsMember2023-12-31xbrli:purespsc:period0001092699spsc:TIEKinetixHoldingBVMember2023-09-132023-09-13iso4217:EUR0001092699spsc:TIEKinetixHoldingBVMember2023-09-302023-09-300001092699spsc:TIEKinetixHoldingBVMember2023-12-312023-12-310001092699spsc:TIEKinetixHoldingBVMember2023-09-300001092699spsc:TIEKinetixHoldingBVMember2023-12-310001092699spsc:TIEKinetixHoldingBVMember2023-10-012023-12-310001092699us-gaap:CustomerRelationshipsMemberspsc:TIEKinetixHoldingBVMember2023-09-300001092699us-gaap:CustomerRelationshipsMemberspsc:TIEKinetixHoldingBVMember2023-10-012023-12-310001092699us-gaap:CustomerRelationshipsMemberspsc:TIEKinetixHoldingBVMember2023-12-310001092699us-gaap:TechnologyBasedIntangibleAssetsMemberspsc:TIEKinetixHoldingBVMember2023-09-300001092699us-gaap:TechnologyBasedIntangibleAssetsMemberspsc:TIEKinetixHoldingBVMember2023-10-012023-12-310001092699us-gaap:TechnologyBasedIntangibleAssetsMemberspsc:TIEKinetixHoldingBVMember2023-12-310001092699us-gaap:DevelopedTechnologyRightsMemberspsc:TIEKinetixHoldingBVMember2023-12-310001092699us-gaap:SeriesOfIndividuallyImmaterialBusinessAcquisitionsMember2023-01-012023-12-310001092699us-gaap:SeriesOfIndividuallyImmaterialBusinessAcquisitionsMember2023-12-310001092699spsc:InterTradeSystemsIncMember2022-10-042022-10-040001092699spsc:InterTradeSystemsIncMember2023-01-012023-12-310001092699spsc:GCommerceIncMember2022-07-192022-07-190001092699spsc:GCommerceIncMember2023-01-012023-12-310001092699spsc:RecurringRevenuesMemberspsc:FulfillmentMember2023-01-012023-12-310001092699spsc:RecurringRevenuesMemberspsc:FulfillmentMember2022-01-012022-12-310001092699spsc:RecurringRevenuesMemberspsc:FulfillmentMember2021-01-012021-12-310001092699spsc:AnalyticsMemberspsc:RecurringRevenuesMember2023-01-012023-12-310001092699spsc:AnalyticsMemberspsc:RecurringRevenuesMember2022-01-012022-12-310001092699spsc:AnalyticsMemberspsc:RecurringRevenuesMember2021-01-012021-12-310001092699spsc:OtherMemberspsc:RecurringRevenuesMember2023-01-012023-12-310001092699spsc:OtherMemberspsc:RecurringRevenuesMember2022-01-012022-12-310001092699spsc:OtherMemberspsc:RecurringRevenuesMember2021-01-012021-12-310001092699spsc:RecurringRevenuesMember2023-01-012023-12-310001092699spsc:RecurringRevenuesMember2022-01-012022-12-310001092699spsc:RecurringRevenuesMember2021-01-012021-12-310001092699spsc:OneTimeRevenuesMember2023-01-012023-12-310001092699spsc:OneTimeRevenuesMember2022-01-012022-12-310001092699spsc:OneTimeRevenuesMember2021-01-012021-12-310001092699srt:MinimumMember2023-01-012023-12-310001092699srt:MaximumMember2023-01-012023-12-310001092699spsc:SetUpFeesMember2022-12-310001092699spsc:SetUpFeesMember2021-12-310001092699spsc:SetUpFeesMember2023-01-012023-12-310001092699spsc:SetUpFeesMember2022-01-012022-12-310001092699spsc:SetUpFeesMember2023-12-310001092699us-gaap:CashEquivalentsMemberus-gaap:MoneyMarketFundsMember2023-12-310001092699us-gaap:CashEquivalentsMemberus-gaap:MoneyMarketFundsMember2022-12-310001092699us-gaap:CertificatesOfDepositMember2023-12-310001092699us-gaap:CertificatesOfDepositMember2022-12-310001092699us-gaap:CommercialPaperMemberspsc:MarketableSecuritiesMember2023-12-310001092699us-gaap:CommercialPaperMemberspsc:MarketableSecuritiesMember2022-12-310001092699spsc:InternallyDevelopedSoftwareMember2022-12-310001092699us-gaap:ComputerEquipmentMember2023-12-310001092699us-gaap:ComputerEquipmentMember2022-12-310001092699us-gaap:LeaseholdImprovementsMember2023-12-310001092699us-gaap:LeaseholdImprovementsMember2022-12-310001092699spsc:OfficeEquipmentAndFurnitureMember2023-12-310001092699spsc:OfficeEquipmentAndFurnitureMember2022-12-310001092699us-gaap:CustomerRelationshipsMember2023-12-310001092699us-gaap:TechnologyBasedIntangibleAssetsMember2023-12-310001092699us-gaap:CustomerRelationshipsMember2022-12-310001092699us-gaap:TechnologyBasedIntangibleAssetsMember2022-12-31utr:sqftspsc:option0001092699spsc:TwoThousandAndNineteenStockRepurchaseProgramMemberus-gaap:CommonStockMember2023-12-310001092699spsc:TwoThousandAndNineteenStockRepurchaseProgramMemberus-gaap:CommonStockMember2023-01-012023-12-310001092699spsc:A2021StockRepurchaseProgramMemberus-gaap:CommonStockMember2023-12-310001092699spsc:A2021StockRepurchaseProgramMemberus-gaap:CommonStockMember2023-01-012023-12-310001092699spsc:A2022StockRepurchaseProgramMemberus-gaap:CommonStockMember2023-12-310001092699us-gaap:CostOfSalesMember2023-01-012023-12-310001092699us-gaap:CostOfSalesMember2022-01-012022-12-310001092699us-gaap:CostOfSalesMember2021-01-012021-12-310001092699us-gaap:SellingAndMarketingExpenseMember2023-01-012023-12-310001092699us-gaap:SellingAndMarketingExpenseMember2022-01-012022-12-310001092699us-gaap:SellingAndMarketingExpenseMember2021-01-012021-12-310001092699us-gaap:ResearchAndDevelopmentExpenseMember2023-01-012023-12-310001092699us-gaap:ResearchAndDevelopmentExpenseMember2022-01-012022-12-310001092699us-gaap:ResearchAndDevelopmentExpenseMember2021-01-012021-12-310001092699us-gaap:GeneralAndAdministrativeExpenseMember2023-01-012023-12-310001092699us-gaap:GeneralAndAdministrativeExpenseMember2022-01-012022-12-310001092699us-gaap:GeneralAndAdministrativeExpenseMember2021-01-012021-12-310001092699us-gaap:EmployeeStockOptionMember2023-01-012023-12-310001092699us-gaap:EmployeeStockOptionMember2022-01-012022-12-310001092699us-gaap:EmployeeStockOptionMember2021-01-012021-12-310001092699us-gaap:PerformanceSharesMember2023-01-012023-12-310001092699us-gaap:PerformanceSharesMember2022-01-012022-12-310001092699us-gaap:PerformanceSharesMember2021-01-012021-12-310001092699spsc:RestrictedStockUnitsAndDeferredStockUnitsMember2023-01-012023-12-310001092699spsc:RestrictedStockUnitsAndDeferredStockUnitsMember2022-01-012022-12-310001092699spsc:RestrictedStockUnitsAndDeferredStockUnitsMember2021-01-012021-12-310001092699us-gaap:RestrictedStockMember2023-01-012023-12-310001092699us-gaap:RestrictedStockMember2022-01-012022-12-310001092699us-gaap:RestrictedStockMember2021-01-012021-12-310001092699spsc:EmployeeStockPurchasePlanMember2023-01-012023-12-310001092699spsc:EmployeeStockPurchasePlanMember2022-01-012022-12-310001092699spsc:EmployeeStockPurchasePlanMember2021-01-012021-12-310001092699spsc:FourZeroOneKStockMatchMember2023-01-012023-12-310001092699spsc:FourZeroOneKStockMatchMember2022-01-012022-12-310001092699spsc:FourZeroOneKStockMatchMember2021-01-012021-12-310001092699us-gaap:EmployeeStockOptionMember2023-12-310001092699us-gaap:RestrictedStockUnitsRSUMember2023-01-012023-12-310001092699spsc:DeferredStockUnitsMember2023-01-012023-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2020-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2021-01-012021-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2021-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2022-01-012022-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2022-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2023-01-012023-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember2023-12-310001092699spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMembersrt:MaximumMember2023-12-310001092699us-gaap:EmployeeStockMember2023-01-012023-12-310001092699us-gaap:EmployeeStockMember2022-01-012022-12-310001092699us-gaap:EmployeeStockMember2021-01-012021-12-310001092699us-gaap:EmployeeStockMember2023-12-310001092699us-gaap:DomesticCountryMember2023-12-310001092699us-gaap:StateAndLocalJurisdictionMember2023-12-310001092699us-gaap:ForeignCountryMember2023-12-310001092699us-gaap:DomesticCountryMemberus-gaap:InternalRevenueServiceIRSMember2023-12-310001092699us-gaap:GeographicDistributionDomesticMemberus-gaap:SalesRevenueNetMemberus-gaap:GeographicConcentrationRiskMember2023-01-012023-12-310001092699us-gaap:GeographicDistributionDomesticMemberus-gaap:SalesRevenueNetMemberus-gaap:GeographicConcentrationRiskMember2022-01-012022-12-310001092699us-gaap:GeographicDistributionDomesticMemberus-gaap:SalesRevenueNetMemberus-gaap:GeographicConcentrationRiskMember2021-01-012021-12-310001092699us-gaap:GeographicDistributionDomesticMemberspsc:IncomeBeforeIncomeTaxMemberus-gaap:GeographicConcentrationRiskMember2023-01-012023-12-310001092699us-gaap:GeographicDistributionDomesticMemberspsc:IncomeBeforeIncomeTaxMemberus-gaap:GeographicConcentrationRiskMember2022-01-012022-12-310001092699us-gaap:GeographicDistributionDomesticMemberspsc:IncomeBeforeIncomeTaxMemberus-gaap:GeographicConcentrationRiskMember2021-01-012021-12-310001092699us-gaap:GeographicDistributionForeignMemberus-gaap:PropertyPlantAndEquipmentMemberus-gaap:GeographicConcentrationRiskMember2023-01-012023-12-310001092699us-gaap:GeographicDistributionForeignMemberus-gaap:PropertyPlantAndEquipmentMemberus-gaap:GeographicConcentrationRiskMember2022-01-012022-12-310001092699spsc:ContributionsToFoundationMember2023-01-012023-12-310001092699spsc:ContributionsToFoundationMember2022-01-012022-12-310001092699spsc:ContributionsToFoundationMember2021-01-012021-12-3100010926992023-10-012023-12-31

UNITED STATES
SECURITIES AND EXCHANGE COMMISSION
Washington, D.C. 20549
FORM 10-K
(Mark One)
xANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934
For the Fiscal Year Ended: December 31, 2023
or
oTRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934
For the Transition Period from_______to_______
Commission file number 001-34702
SPS COMMERCE, INC.
img_1.jpg
(Exact Name of Registrant as Specified in its Charter)
Delaware41-2015127
(State or Other Jurisdiction of
Incorporation or Organization)
(I.R.S. Employer
Identification No.)
333 South Seventh Street, Suite 1000, Minneapolis, MN 55402
(Address of Principal Executive Offices, Including Zip Code)
(612) 435-9400
(Registrant’s Telephone Number, Including Area Code)
Securities registered pursuant to Section 12(b) of the Act:
Title of each classTrading SymbolName of exchange on which registered
Common Stock, par value $0.001 per share
SPSC
The Nasdaq Stock Market LLC (Nasdaq Global Market)
Securities registered pursuant to Section 12(g) of the Act:
None
Indicate by check mark if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Yes x No o
Indicate by check mark if the registrant is not required to file reports pursuant to Section 13 or 15(d) of the Act. Yes o No x
Indicate by check mark whether the registrant (1) has filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that the registrant was required to file such reports), and (2) has been subject to such filing requirements for the past 90 days. Yes x No
Indicate by check mark whether the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T (§232.405 of this chapter) during the preceding 12 months (or for such shorter period that the registrant was required to submit such files). Yes x No
Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of “large accelerated filer,” “accelerated filer,” “smaller reporting company,” and “emerging growth company” in Rule 12b-2 of the Exchange Act.
Large Accelerated Filer
xAccelerated Filero
Non-Accelerated FileroSmaller Reporting Companyo
Emerging Growth Companyo
If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act. o
Indicate by check mark whether the registrant has filed a report on and attestation to its management’s assessment of the effectiveness of its internal control over financial reporting under Section 404(b) of the Sarbanes-Oxley Act (15 U.S.C. 7262(b)) by the registered public accounting firm that prepared or issued its audit report. x
Indicate by check mark whether the registrant is a shell company (as defined in Rule 12b-2 of the Exchange Act). Yes No x
If securities are registered pursuant to Section 12(b) of the Act, indicate by check mark whether the financial statements of the registrant included in the filing reflect the correction of an error to previously issued financial statements.
Indicate by check mark whether any of those error corrections are restatements that required a recovery analysis of incentive-based compensation received by any of the registrant’s executive officers during the relevant recovery period pursuant to §240.10D-1(b). ☐
As of June 30, 2023, the last business day of the registrant’s most recently completed second fiscal quarter, the aggregate market value of shares of the registrant’s common stock held by non-affiliates of the registrant (based upon the closing sale price of $192.06 per share on the Nasdaq Global Market on such date) was approximately $7.0 billion.
The number of shares of the registrant’s common stock, par value $0.001 per share, outstanding as of February 13, 2024 was 36,973,665 shares.
DOCUMENTS INCORPORATED BY REFERENCE
Portions of the Company’s definitive Proxy Statement for the Annual Meeting of Stockholders to be held on May 16, 2024 (the “2024 Proxy Statement”), which is expected to be filed within 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K, are incorporated by reference in Part III of this Annual Report on Form 10-K.
Auditor Firm Id:185Auditor Name:KPMG, LLPAuditor Location:Minneapolis, MN



SPS COMMERCE, INC.
ANNUAL REPORT ON FORM 10-K
TABLE OF CONTENTS
Page
Item 16.
Unless the context otherwise requires, for purposes of the Annual Report on Form 10-K, the words “we,” “us,” “our,” the “Company,” “SPS,” and “SPS Commerce” refer to SPS Commerce, Inc.
img_1.jpg SPS COMMERCE, INC.
2
Form 10-K for the Annual Period ended December 31, 2023

SPECIAL NOTE REGARDING FORWARD-LOOKING INFORMATION
This Annual Report on Form 10-K contains forward-looking statements within the meaning of the U.S. Private Securities Litigation Reform Act of 1995. Forward looking statements regarding us, our business prospects and our results of operations are subject to certain risks and uncertainties posed by many factors and events that could cause our actual business, prospects and results of operations to differ materially from those that may be anticipated by such forward-looking statements. Readers are cautioned not to place undue reliance on these forward-looking statements, which speak only as of the date of this report. In some cases, you can identify forward-looking statements by the following words: “anticipate,” “assume,” “believe,” “continue,” “could,” “estimate,” “expect,” “intend,” “may,” “ongoing,” “plan,” “potential,” “predict,” “project,” “should,” “will,” “would,” or the negative of these terms or other comparable terminology, although not all forward-looking statements contain these words. Similarly, statements that describe our future plans, objectives or goals are also forward-looking. Forward-looking statements may also be made from time to time in oral presentations, including telephone conferences and/or webcasts open to the public. Shareholders, potential investors, and others are cautioned that all forward-looking statements involve risks and uncertainties that could cause results in future periods to differ materially from those anticipated by some of the statements made in this report, including the risks and uncertainties described in Part I, Item IA, “Risk Factors” of this Annual Report on Form 10-K for the year ended December 31, 2023, as may be updated in our subsequent Quarterly Reports on Form 10-Q or other filings from time to time. We expressly disclaim any intent or obligation to update or revise any forward-looking statements, whether as a result of new information, future events or otherwise. Readers are urged to carefully review and consider the various disclosures made by us in this report and in our other reports filed with the U.S. Securities and Exchange Commission ("SEC") that advise interested parties of the risks and factors that may affect our business.
img_1.jpg SPS COMMERCE, INC.
3
Form 10-K for the Annual Period ended December 31, 2023

PART I
Item 1.    Business
Overview
SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.
Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.
As of December 31, 2023, we had approximately 44,800 customers with ongoing contracts to pay us monthly fees, which we refer to as recurring revenue customers. In addition to our recurring revenue customers, to date we have provided our cloud-based supply chain management services to approximately 75,200 other organizations, and we refer to the combination as our customers. Once connected to the SPS Commerce cloud-based retail network, our customers often require additional integrations to new organizations that represent an expansion of our cloud-based network and new sources of revenues for us.
For the years ended December 31, 2023, 2022, and 2021, we generated revenues of $536.9 million, $450.9 million, and $385.3 million, respectively. Our quarter ended December 31, 2023 represented our 92nd consecutive quarter of revenue growth. Recurring revenues from recurring revenue customers accounted for 94%, 93%, and 92% of our total revenues for the years ended December 31, 2023, 2022, and 2021, respectively. Our revenues are not concentrated with any customer, as our largest customer represented less than 1% of total revenues for the years ended December 31, 2023, 2022, and 2021.
Increasing Demand for a Retail Network
The retail industry has undergone many changes in recent years, which have accelerated the need for a more automated supply chain. To navigate disruptions and meet growing consumer demands, companies across the retail ecosystem need to integrate their operations and communications from wholesale, eCommerce, and marketplace sales channels into a single omnichannel process. These channels no longer operate independently but instead in an interconnected fashion as consumers demand more buying and delivery options. The coordination needed to manage multiple channels adds complexity to supply chains and trading partner relationships.
The SPS Commerce retail network offers a single destination where companies can manage item details, orders, shipments, invoices, and much more for any customer and any channel. The network provides businesses with a comprehensive view of retail transactions, enabling them to optimize inventory and fulfill orders efficiently, regardless of channel. Customers use our retail network to manage all channels in a single system, saving time and reducing errors.
Our Products
SPS Commerce operates one of the largest retail networks in the world to improve the way retailers, grocers, distributors, suppliers, and logistics firms manage digital item catalogs, fulfill omnichannel orders, optimize sell-through performance, and automate new trading relationships. To date, 120,000 customers across approximately 85 countries have used SPS Commerce products to expand and optimize the performance of their trading relationships through the network.
Our products fundamentally change how organizations communicate information to manage their omnichannel, supply chain, and other business requirements. Our products replace traditional, manual, or disparate approaches (such as email, phone, and fax), multiple channel-specific solution providers, as well as custom-built, point-to-point integrations by delivering a single smart connection to the entire SPS Commerce retail network of prebuilt connections to thousands of global trading partners.




img_1.jpg SPS COMMERCE, INC.
4
Form 10-K for the Annual Period ended December 31, 2023

Our products include:
Fulfillment - Our Fulfillment product is a full-service electronic data interchange ("EDI") solution that scales as a business grows. Companies can use a single system to manage orders and logistics from all sales channels, including wholesale, eCommerce, and marketplaces. Fulfillment is configurable for any trading partner, document or business system used for order management and offers a full suite of tools to help businesses efficiently manage their supply chain.
Analytics - Our Analytics product enables organizations to improve visibility into how products are selling through a single connection across all sales channels, including wholesale, eCommerce, and marketplaces. Analytics improves access and usage of sales and inventory data through a combination of our analytics applications, network of connections, and industry-leading expertise.
Other Products - We provide several complementary products, such as:
Assortment - Our Assortment product simplifies the communication of robust, accurate item data by automatically translating item attributes, and hierarchies through a single connection across all sales channels.
Community - Our Community product allows organizations to accelerate digitization of their supply chain and improve collaboration with suppliers through proven change management and onboarding programs.
In addition to these offerings, we also provide one-time services such as professional services and testing and certification.
Growing Our Network
As one of the largest providers of cloud-based services for retail supply chain management, SPS Commerce enables trading partner relationships among retailer, grocer, distributor, supplier, and logistics firms that naturally lead to new customer acquisition opportunities.
“Network Effect”
Once connected to our retail network, trading partners can exchange electronic supply chain information with each other. The value of our network increases with the number of trading partners connected to it. After joining our retail network, customers often find that many of their existing or new trading partners are already on the network, allowing for easy connections. The addition of each new customer enables that new customer to communicate with our existing customers and permits our existing customers to do business with the new customer. This “network effect” of adding additional customers to our products’ infrastructure creates a significant opportunity for existing customers to realize incremental sales by working with our new trading partners and vice versa. As a result of this increased volume of activity among our network participants, we earn additional revenues from these participants.
Customer Acquisition Sources
Community - As retailers and suppliers reshape how they do business in an omnichannel landscape, they need to bring new capabilities and services to their trading partner networks. Our Community product is designed to manage this process and bring suppliers into compliance with new requirements. For instance, a supplier may wish to collaborate with their retailers around point-of-sale analytics data, or a retailer may decide to change the workflow or protocol by which it interacts with its suppliers. In each case, the supplier and retailer may engage us to work with their trading partner base to enable the new capability. Performing these programs on behalf of retailers and suppliers generates supplier sales leads for us.
Referrals from Our Customers - We also receive sales leads from our customers seeking to communicate electronically with their trading partners. For example, a supplier may refer a third-party logistics provider or manufacturer, which is not in our network, to us.
Direct Marketing - We employ various marketing strategies. Our marketing programs include a variety of lead generating activities including digital marketing, conferences and trade shows, sponsored events, and public relations activities targeted at key decision makers within our prospective customers.



img_1.jpg SPS COMMERCE, INC.
5
Form 10-K for the Annual Period ended December 31, 2023

Channel Partners - In addition to the customer acquisition sources identified above, we market and sell our products through a variety of channel partners, including software providers, resellers, system integrators, and logistics partners. For example, software partners such as Microsoft, NetSuite, Oracle, SAP, Sage, and their business partner communities generate sales for us as part of broader enterprise resource planning, warehouse management system and/or transportation management system sales efforts. Our logistics partners also drive new sales both by providing leads and by embedding our products as part of their service offerings.
Our Growth Strategy
Our objective is to be the leading global retail network and provider of supply chain management products. Key elements of our strategy include:
Further Penetrate Our Current Market - We believe the global supply chain management market is underpenetrated. As the retail industry continues to respond to the changing requirements of the omnichannel marketplace, and as the supply chain ecosystem becomes more complex and geographically dispersed, we believe the demand for supply chain management solutions will increase. We intend to continue leveraging our relationships with customers and their trading partners to obtain new sales leads.
Increase Revenues from Our Customer Base - We believe our overall customer satisfaction is strong and will lead our customers to further expand their use of our products they have purchased, as well as purchase additional products to continue improving the performance of their trading partner relationships, generating additional revenues for us. We also expect to introduce new products to sell to our customers. We believe our position as the incumbent supply chain management solution provider to our customers, our integration into our recurring revenue customers’ business systems, and the modular nature of our cloud-based products are conducive to deploying additional products with customers.
Expand Our Distribution Channels - We intend to grow our business by expanding our sales capacity to gain new customers. We also believe there are valuable opportunities to promote and sell our products through collaboration with other providers.
Expand Our International Presence - We believe our presence in Asia Pacific, as well as in Europe, represents a significant competitive advantage. We plan to increase our global sales efforts to obtain new customers around the world. We intend to leverage our current global presence to increase the number of integrations we have with retailers in foreign markets to make our products more valuable to their trading partners based overseas.
Enhance and Expand Our Services - We intend to further improve and develop the functionality and features of our cloud-based products, including, from time to time, developing new offerings and applications.
Selectively Pursue Strategic Acquisitions - The nature of our market provides an opportunity for selective acquisitions. We plan to continue to evaluate potential acquisitions based on the number of new customers, revenue, functionality, or geographic reach the acquisition would provide relative to the purchase price, and our ability to integrate and operate the acquired business. In 2023, we acquired TIE Kinetix Holding B.V. ("TIE Kinetix"), a leading provider of supply chain digitalization including EDI and e-invoicing in Europe and the United States. This acquisition further extends the capabilities of our network and added new customers and technology.
Our Market Opportunity
We believe we have a significant market opportunity to help organizations accelerate their omnichannel retail strategies with our retail network and supply chain products.
Omnichannel retail requires new connections/transactions - Each sales channel (wholesale, eCommerce, and marketplaces) brings new trading partners to the supply chain process. As customers expand their business, the SPS Commerce retail network is a core part of their omnichannel strategy. Each additional channel brings more reliance and volume to the network and increases customer revenue.


img_1.jpg SPS COMMERCE, INC.
6
Form 10-K for the Annual Period ended December 31, 2023

Retail needs automation - With increased retail store openings and closings, labor shortages, supply chain disruptions, and new buying patterns, retailers are demanding more from their trading partners as they need to be agile and transition their businesses as markets change. Businesses using SPS Commerce products to automate supply chain functions with their trading partners can pivot quickly to new delivery models and capture market share. The visibility into orders, shipments, and inventory gained by automating trading relationships on the SPS Commerce retail network is critical to their success and offers a competitive advantage.
Consumers want new products - Retail assortments are ever-changing with seasonality shifts and new product introductions from companies of all sizes. Consumers want the latest products and retailers are continually chasing trends, offering differentiated items, and introducing new products and suppliers to their supply chains. As retailers evolve, their trading partner relationships must support any new product introductions or new suppliers to achieve their merchandising goals. The SPS Commerce retail network automates these relationships to quickly secure product details, initiate orders, and track performance to help keep operations running smoothly.
Technology, Development and Operations
Technology
SPS Commerce was an early provider of cloud-services to the retail supply chain management industry, launching the first version of what would become our current services in 1997. We use commercially available hardware and cloud-services with a combination of proprietary and commercially available software.
Our cloud-service model treats all customers as logically separate tenants within a shared virtual infrastructure. As a result, we spread the cost of delivering our products across our customer base. Because we do not manage thousands of distinct applications with their own business logic and database schemes, we can scale our business faster than traditional software vendors, even those that modified their products to be accessible over the internet.
Development
Our research and development efforts focus on maintaining, improving, and enhancing our existing products, as well as developing new products and applications. Our multi-tenant products serve all of our customers, which allows us to maintain relatively low research and development expenses and release software updates more frequently compared to traditional on-premise licensed software products that support multiple versions. Our development efforts take place at our United States ("U.S.") locations in Minnesota and New Jersey, as well as in Melbourne, Australia; Toronto, Canada; and Kyiv, Ukraine.
Operations
We operate our infrastructure in third-party data centers located throughout North America, Europe, and Australia, as well as provisioned services with cloud providers. In most cases, infrastructure and services are managed by us.
We have internal and third-party monitoring software that continually checks the status of services and underlying infrastructure for availability and performance, helping ensure that the network is always available and providing desired service levels. We have a technology team that includes system provisioning, management, maintenance, monitoring, and back-up.
We operate a service architecture using industry best practices to ensure multiple points of redundancy, high availability, and scale as needed. Our databases are replicated between locations with a defined recovery point objective.
Sales & Marketing
We sell our products through an employed global sales force that focuses on retailers, grocers, distributors, suppliers, and logistics firms.
Our marketing teams focus on driving awareness and demand for our products through the following activities:
Demand Generation - Engages with target audiences using the latest digital marketing strategies to bring opportunities to our sales teams.
Communications - Manages our brand and public relations, as well as provides go-to-market support.
img_1.jpg SPS COMMERCE, INC.
7
Form 10-K for the Annual Period ended December 31, 2023

Product Marketing - Equips our sales teams, performs market studies, and promotes the unique capabilities of each of our products using our go-to-market strategies.
Events - Highlights our presence at industry trade shows and orchestrates virtual and in-person events.
Customer Success
The Customer Success team includes retail and technology experts who implement our products on our customers' behalf, provide ongoing support, and collaborate with accounts to identify opportunities for added value from their existing products. This team focuses on delivering services that build customer satisfaction and result in high customer retention rates.
Competition
Vendors in the supply chain management industry offer products through three delivery methods: traditional on-premise software, cloud-based managed services, and cloud-based full-service products.
The market for cloud-based supply chain management products is fragmented and rapidly evolving. Cloud-service vendors compete directly with each other based mainly on the following:
the breadth of pre-built network connections to retailers, third-party logistics providers, and other trading partners;
a history of establishing and maintaining reliable connections with trading partners;
the reputation of the cloud-service vendor in the supply chain management industry;
price;
specialization in a customer market segment;
speed and quality with which the cloud-service vendor can integrate its customers to their trading partners;
functionality of the cloud-service product, such as the ability to integrate the product with a customer’s business systems;
breadth of complementary supply chain management products the cloud-service vendor offers; and
training and customer support services provided during and after a customer’s initial integration.
Cloud-service vendors also compete with traditional on-premise software companies. Traditional on-premise software companies focused on supply chain integration management include IBM Sterling and OpenText. These companies offer a “do-it-yourself” method in which customers purchase, install, and manage specialized software, hardware, and value-added networks for their supply chain integration needs. This method requires customers to invest in staff to operate and maintain the software. Traditional on-premise software companies use a single-tenant approach in which information maps to retailers are built for and used by one supplier, as compared to cloud-service products that allow multiple customers to share information maps with a retailer.
Managed service providers focused on the supply chain management market include IBM Sterling, OpenText, TrueCommerce and many other small providers. These companies offer a cloud-based product in which they develop and maintain the core technology, while the customer’s internal staff is responsible for the day-to-day customization, optimization, and operations of the technology.
In contrast, full-service providers, including SPS Commerce, offer cloud-based products and expert resources that customize, optimize, and operate the technology. This approach offloads the time-intensive process of managing these products, which is not a core competency for most businesses.
Customers of traditional on-premise software providers must typically make significant upfront investments in the supply chain management products these competitors provide, which can decrease customers’ willingness to abandon their investments in favor of a cloud-service product. Cloud-service vendors compete with these traditional software products based on the total cost of ownership and flexibility.
img_1.jpg SPS COMMERCE, INC.
8
Form 10-K for the Annual Period ended December 31, 2023

Intellectual Property and Proprietary Content
SPS Commerce relies on a combination of copyright, trademark, patent, and trade secret laws as well as confidentiality procedures and contractual provisions to protect our proprietary technology and our brand. We enter into confidentiality and proprietary rights agreements with our employees, consultants and additional third parties, and control access to software, documentation, and other proprietary information. We have registered trademarks and pending trademark applications in the U.S. and certain foreign countries.
Depending on the jurisdiction, trademarks are generally valid as long as they are in use or their registrations are properly maintained, and they have not been found to have become generic. Registrations of trademarks can also generally be renewed indefinitely as long as the trademarks are in use. We have one patent we acquired through the acquisition of GCommerce. Our trade secrets consist primarily of the software we have developed for our SPS Commerce cloud-based products and network. Our software is also protected under copyright law, but we do not have any registered copyrights.
Human Capital
At SPS, we believe our employees have and will continue to be a primary reason for our growth and success. Our core values drive our culture and are foundational to how we create an engaging workplace, identify the right talent, and train and develop our teams. Our values guide our interactions with our customers, partners, and one another. We attract, retain, and reward exceptional talent by cultivating an inclusive, high-performing culture and engaging employees with meaningful work and opportunities to grow and develop.

Oversight and Governance
Our board of directors and Compensation and Talent Committee have oversight of our human capital management and diversity, equity, and inclusion efforts. They receive regular updates from our Chief Human Resources Officer on key strategic initiatives and other relevant matters related to human resources including, but not limited to, hiring, development, retention, employee engagement, succession planning, compensation and benefits, and human resources-related risks.

Our People
As of December 31, 2023, we had a total of 2,489 employees worldwide, including 1,238 in cost of revenues, 644 in sales and marketing, 402 in research and development, and 205 in general and administrative. 81% are based in North America with the remaining in Europe and Asia Pacific. Substantially all our employees are employed on a full-time basis. We also engage third-party agencies for staff augmentation to support our operations. Although we have statutory employee representation obligations in certain countries, none of our U.S. employees are represented by a labor union.
36% of our global workforce identify as female and 2% did not specify their gender. Within the U.S. 18% of our employees self-identified as being a member of an underrepresented group. Our executive team is comprised of 10 individuals, of which 40% are women.

Diversity, Equity, and Inclusion
We value diversity, equity, and inclusion and believe our differences make us, our customers, and our communities better. We strive to create an organization where every employee feels welcomed and is empowered to do their best work. We make our commitment to diversity, equity, and inclusion a reality by incorporating it into our human resource core processes and our talent strategies.
Our Employee Resource Groups ("ERGs") foster employee connections across the globe, provide learning, engagement, and networking opportunities, as well as provide important insights in support of advancing equity company-wide. These employee-led resource groups create community and focus across several dimensions including gender, race and ethnicity, gender identity, sexual orientation, ability/disability, military service and more. All employees are welcome and encouraged to participate in one or more of our ERGs, which include the Black Business Resource Group, the Diversity and Inclusion Group, the LGBTQ+ Group, and Women in Tech.
Since 2021, all new hires participate in an interactive diversity, equity, and inclusion curriculum focused on the History of Racism, Implicit Bias, and Allyship. Additionally, we provide our managers with resources to support building inclusive teams and being an inclusive leader.
img_1.jpg SPS COMMERCE, INC.
9
Form 10-K for the Annual Period ended December 31, 2023

For well over a decade, SPS has invested in and supported the communities in which we live and work, focused on efforts that expand our future talent pipeline by helping to develop the workforce of tomorrow. Over the years we have invested in student programs focused on creating opportunities for high school and college students who are part of underrepresented populations including women, genderqueer and non-binary individuals, and racial minorities. These opportunities build experiences through job shadowing, work-study, mentoring, and professional development in areas of Science, Technology, Engineering and Math ("STEM"), supply-chain, analytics, and customer success.
Established in 2020, the SPS Diverse Scholar Program supports diverse first-generation college students pursuing a career in technology. In addition to receiving funding for their education, our diverse scholars participate in our internship program, have access to mentors, are offered part-time work during the school year, and are connected to a wide range of business professionals.
Additionally, as a federal contractor we comply with federal contractor affirmative action requirements to employ and promote women, minorities, individuals with disabilities, and protected veterans.

Talent Acquisition, Engagement, and Retention
We work diligently to attract the best talent from a variety of sources to meet current and future business needs. We have cultivated relationships with many colleges and universities, including Historically Black Colleges and Universities ("HBCUs"), industry groups, professional associations, and other student programs focused on hiring women, non-binary and genderqueer, minorities, and individuals with disabilities. Our campus program focuses on bringing in talent with experience from schools that are leaders in technology, supply chain, engineering, and business. 41% of our hires from our most recent campus cohort identify as underrepresented minorities.
We regularly survey our employees to better understand their perspectives and where we can focus to improve their experience. Our 2023 employee engagement survey indicated a positive engagement score of 71%, which is higher than the benchmark provided by our survey vendor both globally and for North American companies of similar size or within our sector. Additionally, feedback on diversity and inclusion continues to score higher than benchmarks with an 81% positive perception score.
Our 2023 employee retention rate of 92% improved compared to 88% in 2022. We believe our strong company culture and focus on providing meaningful work, professional development, flexible work options, competitive pay and benefits, as well as our commitment to diversity, equity, and inclusion contribute to our high employee retention.

Growth and Development
Development of our employees and leaders results in high performing teams who are empowered to grow their careers and deliver exceptional results, and it begins on the first day of employment with SPS. When new employees join SPS, they attend a robust new hire onboarding program that focuses on the skills necessary to become productive employees, including training on company technology, collaboration tools, our company culture, values, and a comprehensive diversity, equity, and inclusion learning experience. Onboarding is followed by on-the-job training and regular performance and development discussions between employees and their managers.
We provide ongoing opportunities for our employees to build new skills, develop in their current role, and prepare for future roles. All employees have access to an online learning platform that supports their development as well as opportunities to participate in programs such as AccelerateMe and Exploring Leadership. Annually we host SPS Professional Development Week ("PDW"), a collection of learning and development opportunities designed to help employees develop skills for continued growth. In 2023, the PDW employee track focused on how to effectively receive feedback and owning your SPS career. The PDW manager track focused on change management, what it means to be an inclusive leader, and building Crucial Conversation skills.
Our talent strategy prioritizes growing and developing our own leaders. In 2023, we refreshed our Leadership Model by introducing competencies for each of our four leadership pillars: People Developer, Culture Champion, Strategist, and Results Enabler. These competencies will help frame our leadership development programs as we continue to build tools and resources to advance our leaders’ capabilities to grow and scale their teams. Additionally, we assess our leadership talent across the organization through our talent review process, which allows us to differentiate talent based on performance and potential. This process is the basis for succession planning for critical roles in the organization.

img_1.jpg SPS COMMERCE, INC.
10
Form 10-K for the Annual Period ended December 31, 2023

Total Rewards and Employee Well-being
At SPS, our total rewards strategies support the financial, physical, and mental well-being of our employees and their families and incorporate market competitive pay and comprehensive benefits programs for all global employees. We offer compelling and competitive packages designed to attract, retain, and motivate our employees. Our benefit programs align to our geographies and provide a comprehensive healthcare offering and other programs, including an employee stock purchase plan in most jurisdictions.
We believe in paying team members equitably, regardless of gender, race, or ethnicity, and we regularly review the pay data of U.S. and other geographies to ensure fairness.
The well-being of our workforce is particularly important to us. In addition to our traditional employee benefits, we offer several supplemental benefits to support the physical, mental, and financial health of all our employees. We have partnered with a global employee assistance program ("EAP") vendor that provides curated webinars in support of mental health and well-being, and offers all employees and their dependents access to mental health providers and free sessions with a licensed provider. Our U.S. healthcare platform offers virtual mental health solutions, including tools focused on mindfulness, meditation, and wellness. In 2023, we launched our Wellbeing at SPS intranet site providing greater access to all our programs and resources.
At SPS, we believe generosity and caring make a difference. We actively contribute to our communities and encourage volunteerism and philanthropy among our employees. The Team SPS Gives Back Matching program amplifies SPS employees’ charitable contributions or volunteer hours with matching donations, furthering their support to the organizations they believe in and care about.
Company Information
We were originally incorporated as St. Paul Software, Inc., a Minnesota corporation, on January 28, 1987. On May 30, 2001, we reincorporated in Delaware under our current name, SPS Commerce, Inc. Our principal executive offices are located at the address listed below. Our telephone number is (612) 435-9400 and our website address is www.spscommerce.com. Information on our website does not constitute part of this Annual Report on Form 10-K or any other report we file or furnish with the SEC.
SPS Commerce, Inc.
333 South Seventh Street
Suite 1000
Minneapolis, MN 55402
Available Information
We provide free access to various reports that we file with or furnish to the SEC through our website at www.spscommerce.com, as soon as reasonably practicable after they have been filed or furnished. These reports include, but are not limited to, our Annual Reports on Form 10-K, Quarterly Reports on Form 10-Q, Current Reports on Form 8-K and any amendments to these reports. Our SEC reports can be accessed through the investor relations section of our website or through the SEC’s website at www.sec.gov. Stockholders may also request copies of these documents by writing to us at the address above, with attention to "Investor Relations".
Item 1A.    Risk Factors
Set forth below and elsewhere in this Annual Report on Form 10-K, and in other documents we file with the SEC, are risks and uncertainties that could cause our actual results to differ materially from the results contemplated by the forward-looking statements contained in this Annual Report on Form 10-K and in other written and oral communications from time to time. You should carefully consider all of the following risks and the other information in this Report and our other filings with the SEC before you decide to invest in our Company or to maintain or increase your investment. Our business could be harmed by any of these risks. The trading price of our common stock could decline due to any of these risks. In assessing these risks, you should also refer to the other information contained in this Annual Report on Form 10-K, including our consolidated financial statements and related notes.


img_1.jpg SPS COMMERCE, INC.
11
Form 10-K for the Annual Period ended December 31, 2023

The risks included in this section are not the only ones we face. We operate in a very competitive and rapidly changing environment. New risk factors emerge from time-to-time, and it is not possible for management to predict all such risk factors, nor can it assess the potential impact of all such risk factors on our business or the extent to which any factor, or combination of factors, may cause actual results to differ materially from those in any forward-looking statements. If any of the following risks actually occur, our business, results of operations, financial condition and future prospects would likely suffer. In that case, the trading price of our common stock could decline, and you may lose all or part of your investment.
Business
If we are unable to attract new customers, or sell additional products to existing customers, or if our customers do not increase their use of our products, our revenue growth and profitability will be adversely affected.
To increase our revenue and achieve and maintain profitability, we believe that we must regularly add new customers, sell additional products to existing customers, and our customers must increase their use of the products for which they currently subscribe. We intend to grow our business by retaining and attracting talent, developing strategic relationships with resellers, including resellers that incorporate our applications in their offerings, and increasing our marketing activities. If we are unable to hire or retain quality personnel, convert companies that have been referred to us by our existing network into paying customers, ensure the effectiveness of our marketing programs, or if our existing or new customers do not perceive our products to be of sufficiently high value and quality, we might not be able to increase sales and our operating results will be adversely affected. If we fail to sell our products to existing or new customers, we will not generate anticipated revenues from these products, our operating results will suffer, and we will not be able to grow our revenues or maintain profitability as planned.
We do not have long-term contracts with most of our recurring revenue customers, and therefore a lack of success in maintaining or improving forecasted renewal rates will have adverse effects on revenue and financial results.
Most of our contracts with our recurring revenue customers allow the customer to cancel the contract for any reason with 30 to 90 days’ notice. Our continued success therefore depends significantly on our ability to meet or exceed our recurring revenue customers’ expectations because most recurring revenue customers do not make long-term commitments to use our products. In addition, if our reputation in the supply chain management industry is harmed or diminished for any reason, our recurring revenue customers have the ability to terminate their relationship with us on short notice and seek alternative supply chain management solutions. We may also not be able to accurately predict future trends in customer renewals, and our customers’ renewal rates may decline or fluctuate because of several factors, including their dissatisfaction with our services, the cost of our services compared to the cost of services offered by our competitors and reductions in our customers’ spending levels. If a significant number of recurring revenue customers seek to terminate their relationship with us, our business, results of operations and financial condition would be adversely affected in a short period of time.
Economic weakness and uncertainty could adversely affect our revenue, lengthen our sales cycles, and make it more difficult for us to forecast operating results accurately.
Our revenues depend significantly on general economic conditions and the sustainability and health of retailers. Economic weakness and constrained retail spending may result in slower growth, or reductions, in revenues and gross profits in the future. We have experienced, and may experience in the future, reduced spending in our business due to financial turmoil affecting the U.S. and global economy, and other macroeconomic factors affecting spending behavior. Uncertainty about future economic conditions increases the difficulty of forecasting operating results and making decisions about future investments. In addition, economic conditions or uncertainty may cause customers and potential customers to reduce or delay technology purchases, including purchases of our products. Our sales cycles may lengthen if purchasing decisions are delayed as a result of uncertain technology or development budgets or contract negotiations become more protracted or difficult as customers institute additional internal approvals for technology purchases. Delays or reductions in technology spending could have a material adverse effect on demand for our products, and consequently our results of operations and prospects.
img_1.jpg SPS COMMERCE, INC.
12
Form 10-K for the Annual Period ended December 31, 2023

Our continued growth could significantly strain our personnel resources and infrastructure, and if we are unable to implement appropriate controls and procedures to manage our growth, we may not be able to implement our business plan successfully.
We have experienced a period of rapid growth in our headcount and operations. To the extent that we are able to sustain such growth, it might place a significant strain on our management, administrative, operational, and financial resources, and infrastructure. Our success will depend in part upon the ability of our senior management to manage this growth effectively. To do so, we must continue to hire, train, and manage new employees as needed. To manage the expected growth of our operations and personnel, we will need to continue to improve our operational, financial and management controls and our reporting systems and procedures. If we fail to successfully manage our growth, we will be unable to execute our business plan as expected.
If we fail to attract, retain, and train members of our senior management team and other key personnel, or if we are not able to successfully manage the transition of our Chief Executive Officer or our President and Chief Operating Officer, our business could be adversely affected.
Given the complex nature of the cloud-based technology through which our business operates and the speed with which such technology advances, our future success is dependent, in large part, upon our ability to attract, retain, and train highly qualified key executive, managerial, technology, and sales personnel. Competition for talented personnel is intense and we cannot be certain that we can retain our key personnel or that we can attract, assimilate, or retain such personnel in the future to adequately scale our business. Additionally, the loss of any key or a significant number of personnel in our technology, customer success, or sales teams might significantly delay or prevent the achievement of our business objectives and could materially harm our business, customer relationships, results of operations and financial condition.

Further, our former Chief Executive Officer, Archie Black, retired as Chief Executive Officer effective October 2, 2023, and the board of directors appointed his successor, Chad Collins, as of that date. We also announced the planned retirement of our President and Chief Operating Officer, James Frome, effective December 31, 2024. Leadership transitions and management changes involve inherent risks, can be difficult to manage and may cause uncertainty or a disruption, which could adversely affect our business.
If the market for cloud-based supply chain management products declines or does not maintain its historical growth rates, our revenues may decline or fail to grow, and we may incur operating losses.
We derive, and expect to continue to derive, substantially all of our revenues from providing cloud-based supply chain management products to retailers, grocers, distributors, suppliers, and logistics firms. The market for these products has historically experienced growth, but it is uncertain whether these products will continue or sustain growing levels of demand and market acceptance. Our success will depend on the willingness of retailers and their trading partners to accept our products as an alternative to traditional licensed hardware and software products.
Some retailers, grocers, distributors, suppliers, or logistics firms may be reluctant or unwilling to use our cloud-based products for a number of reasons, including their potential significant initial investment to replace existing investments in supply chain management hardware and licensed software and perceived loss of control over user data with a cloud-based product. Other factors that may limit market acceptance of our cloud-based supply chain management products include:
our ability to maintain high levels of customer satisfaction;
our ability to maintain continuity of service for all users of our cloud-based products;
the price, performance, and availability of competing products, both new and existing; and
our ability to address customers’ confidentiality and security concerns about information stored within our cloud-based products.
If customers do not perceive the benefits of our cloud-based supply chain management products, or if customers are unwilling to accept our cloud-based products as an alternative to the on-premise software or other options approach, demand for our products may not continue to grow or may grow more slowly than we expect, either of which would adversely affect our revenues, growth prospects, and overall operating results.
img_1.jpg SPS COMMERCE, INC.
13
Form 10-K for the Annual Period ended December 31, 2023

The markets in which we participate are highly competitive, and our failure to compete successfully would make it difficult for us to add and retain customers and would reduce or impede the growth of our business.
The markets for supply chain management products are increasingly competitive and global. We expect competition to increase in the future both from existing competitors and new companies that may enter our markets. We face competition from:
cloud-service providers that deliver business-to-business information systems using a multi-tenant approach;
traditional on-premise software providers; and
managed service providers that combine traditional on-premise software with professional technology services.
Moreover, our industry is highly fragmented, and we believe it is likely that our existing competitors will continue to consolidate or will be acquired. In addition, some of our competitors may enter into new alliances with each other or may establish or strengthen cooperative relationships with systems integrators, third-party consulting firms or other parties. New entrants not currently considered to be competitors may also enter the market through new technology offerings, acquisitions, partnerships, or other strategic relationships. Any such new offerings, consolidation, acquisition, alliance or cooperative relationship could lead to pricing pressure, loss of customers and loss of market share, and could result in one or more competitors with greater financial, technical, marketing, service and other resources, all of which could have a material adverse effect on our business, operating results and financial condition. Increased competition could reduce our market share, revenues, and operating margins, increase our costs of operations, and otherwise adversely affect our business.
To remain competitive, we will need to invest continuously in software development, marketing, customer service and support, product delivery and other cloud-based network infrastructure. However, we cannot assure you that new or established competitors will not offer products that are superior to ours or lower in price than ours, or both. We may not have sufficient resources to continue the investments in all areas of software development, marketing, customer service and support and infrastructure needed to maintain our competitive position which may diminish our market share and business prospects.
We may not be able to successfully integrate or otherwise operate newly acquired companies or businesses, which could adversely affect our financial results.
Acquisitions involve numerous risks including:
incurring significantly higher than anticipated capital expenditures and operating expenses;
failing to assimilate the operations, customers, and personnel of the acquired company or business;
disrupting our ongoing business;
dissipating or distracting our management resources;
dilution to existing stockholders from the issuance of equity securities;
liabilities or other problems associated with the acquired business;
becoming subject to adverse tax consequences, substantial depreciation, or deferred compensation charges;
compliance with laws and regulations and exposure to other contingent liabilities;
retaining key management of the acquired company;
failing to maintain uniform standards, controls, and policies; and
impairing relationships with employees and customers as a result of changes in management.





img_1.jpg SPS COMMERCE, INC.
14
Form 10-K for the Annual Period ended December 31, 2023

Fully integrating an acquired company or business into our operations may take a significant amount of time and resources. In addition, we may only be able to conduct limited due diligence on an acquired company’s operations. Following an acquisition, we may be subject to liabilities arising from an acquired company’s past or present operations, including liabilities related to data security, encryption and privacy of customer data, and these liabilities may be greater than the warranty and indemnity limitations that we negotiate. We cannot assure you that we will be successful in overcoming these risks or any other problems encountered with acquisitions. To the extent we do not successfully avoid or overcome the risks or problems related to any acquisitions, our results of operations and financial condition could be adversely affected. Future acquisitions also could impact our financial position and capital needs and could cause substantial fluctuations in our quarterly and yearly results of operations. We also may not be able to achieve anticipated synergies or financial results post acquisition, which could negatively impact our operations and financial results. Acquisitions could include significant goodwill and intangible assets, which may result in future impairment charges that would reduce our stated earnings.
Because our long-term success depends, in part, on our ability to expand the sales of our products to customers located outside of the United States and expand operations to support such expansion, our business will be increasingly susceptible to risks associated with international operations.
Our limited experience in operating our business outside of the United States increases the risk that our current and any future international expansion efforts will not be successful. Expanding international sales and operations subjects us to new risks that, generally, we have not faced in the U.S., including:
misjudging the markets and competitive landscape of foreign jurisdictions;
fluctuations in currency exchange rates;
longer accounts receivable payment cycles and difficulties in collecting accounts receivable;
difficulties in managing and staffing international operations;
differing technology standards;
potentially adverse tax consequences, including the complexities of foreign value added tax systems and restrictions on the repatriation of earnings;
localization of our products, including translation into foreign languages and associated expenses;
the burdens of complying with a wide variety of foreign laws and regulations, and changes to such laws and regulations, including laws and regulations related to employment, privacy and tax;
increased financial accounting and reporting burdens and complexities;
unexpected changes in effective tax rates due to international tax liabilities subject to allocation of expenses in differing jurisdictions;
political, social, and economic instability abroad, terrorist attacks and security concerns in general;
greater potential for corruption and bribery; and
reduced or varied protection for intellectual property rights in some countries.
The occurrence of any one of these risks could adversely affect our international business and, consequently, our results of operations generally. Additionally, operating in international markets also requires significant management attention and financial resources. We cannot be certain that the investment and additional resources required in establishing, acquiring, or integrating operations in other countries will produce desired levels of revenues or profitability.
In addition, we operate in parts of the world that are recognized as having governmental corruption problems and where local customs and practices may not foster strict compliance with anti-corruption laws. Our continued operation and potential expansion outside the U.S. could increase the risk of such violations in the future. Despite our training and compliance programs, we cannot assure you that our internal control policies and procedures will protect us from unauthorized, reckless, or criminal acts committed by our employees or agents, including by third parties we utilize in foreign jurisdictions. In the event that we believe, or have reason to believe, that our employees or agents have or may have violated applicable anti-corruption laws, including the U.S. Foreign Corrupt Practices Act, we may be required to investigate or have outside counsel investigate the relevant facts and circumstances, which can be expensive and require significant time and attention from senior management. Violations of these laws may result in severe civil and criminal sanctions and penalties, which could disrupt our business and have a material adverse effect on our reputation, results of operations or financial condition.
img_1.jpg SPS COMMERCE, INC.
15
Form 10-K for the Annual Period ended December 31, 2023

Any unrest, military activities, or sanctions impacting our international operations, should they occur, could disrupt operations, and have a material adverse effect on our business. Any such disruption to our operations may be prolonged and require a transition to alternative workforce locations. An alternative workforce location may be more expensive to train, staff, and operate and may cause delays and shortfalls in programming deliverables and services, thus potentially harming our business. Given our significant international workforce in Ukraine and the Philippines and the potentially volatile political and civil unrest situations in both areas, including but not limited to Russian interference and civil unrest with multiple groups, respectively, we are more susceptible to disruptions there. Those potentially disruptive environments are out of our control and we cannot predict the outcome of future developments or reactions to such developments by the U.S., European, Asian, Oceanic, United Nations or other international authorities and organizations.
Our failure to raise additional capital or generate cash flows necessary to expand our operations and invest in new technologies could reduce our ability to compete successfully and adversely affect our results of operations.
We may need to raise additional capital due to shortfalls in cash flow or for other reasons, and we may not be able to obtain debt or additional equity financing on favorable terms, if at all. If we raise additional equity financing, our security holders may experience significant dilution of their ownership interests and the value of shares of our common stock could decline. If we engage in debt financing, we may be required to accept terms that restrict our ability to incur additional indebtedness, force us to maintain specified liquidity or other ratios or restrict our ability to pay dividends or make acquisitions. If we need additional capital and cannot raise it on acceptable terms, we may not be able to, among other things:
develop and enhance our products;
continue to expand our technology development, sales, and marketing organizations;
acquire new or complementary technologies, products, or businesses;
hire, train and retain employees; or
respond to competitive pressures or unanticipated working capital requirements.
Our inability to do any of the foregoing could reduce our ability to compete successfully and adversely affect our results of operations.
The extent to which public health emergencies such as epidemics, pandemics, or similar outbreaks may adversely impact our business, results of operations and financial condition will depend on on-going and future developments and outcomes, which are highly uncertain and cannot be predicted.
Our business operations and financial results may be adversely impacted by public health emergencies, such as epidemics, pandemics, and similar outbreaks. Despite our efforts to manage these impacts, their ultimate impact also depends on factors beyond our knowledge or control, including the duration and severity of any such outbreak and actions taken to contain its spread and mitigate its public health effects.
Public health emergencies could have adverse impacts on our business operations by limiting our employees' ability to work and travel, disrupting our third-party technology providers, or causing internal operational workflow to change, among other potentially unforeseen circumstances given the uncertainties related to public health emergencies.             
Additionally, public health emergencies may cause significant disruptions and changes in the economic or political conditions in markets in which we operate. This may cause significant volatility in demand for our services due to, among other adverse impacts, disruption and downturns in our customers’ businesses and related supply chains, an acceleration of existing customer bankruptcies, or our customers’ inability to pay for our services when due or in full. Although certain customers may have a reduced demand for our services, we also may see increased demand by certain customer segments, potentially offsetting reduced demand.
img_1.jpg SPS COMMERCE, INC.
16
Form 10-K for the Annual Period ended December 31, 2023

Products and Service Offerings
Any new products and changes to existing products we pursue could fail to attract or retain customers or generate expected revenues.
Our ability to retain, increase, and engage our customers and to increase our revenues depends heavily on our ability to identify, develop, and launch successful new products. We may introduce significant changes to our existing products or develop and introduce new and unproven products which include or use technologies with which we have little or no prior development or operating experience. If new or enhanced products fail to garner expected customer demand in a timely manner or at all, we may fail to generate sufficient revenues, operating margin, or other value to justify our investments and our business may be adversely affected.
Our business is dependent on our ability to maintain and scale our technical infrastructure, and any failure to effectively maintain or scale such infrastructure could damage our reputation, result in a potential loss of revenue, and adversely affect our financial results.
Our reputation and ability to attract, retain and serve our customers is dependent upon the reliable performance of our cloud-based products and our underlying technical infrastructure and cloud providers. As our user base and the amount and types of information shared on our cloud-based network continue to grow, we will need an increasing amount of technical infrastructure, including network capacity and computing power, to continue to satisfy the needs of our users. It is possible that we or our cloud providers may fail to effectively maintain and scale our technical infrastructure to accommodate these increased demands. Any failure to effectively maintain and grow our technical infrastructure could result in interruptions or delays in service which may damage our reputation, result in a potential loss of customers, and adversely affect our financial results.
Our inability to adapt to rapid technological change could impair our ability to remain competitive.
The industry in which we compete is characterized by rapid technological change, frequent introductions of new products, and evolving industry standards, which may include advancements in artificial intelligence. Existing products can become obsolete and unmarketable when vendors introduce products utilizing new technologies or new industry standards emerge, and as a result, it is difficult for us to predict the life cycles of our products. Our ability to attract new customers and increase revenues from customers will depend in significant part on our ability to anticipate technological changes, and the corresponding impact on customer needs, evolving requirements, and future industry standards, and to continue to enhance our existing products or introduce or acquire new products to keep pace with such technological developments. The success of our enhanced or new products depend on several factors, including the timely completion, introduction and market acceptance of the enhancement or product. Any new product we develop or acquire might not be introduced in a timely or cost-effective manner and might not achieve the broad market acceptance necessary to generate expected revenues. If any of our competitors or new market entrants implement new technologies or upgrades to existing technologies before we are able to implement them, they may be able to provide more effective products than ours at lower prices. Any delay or failure in the introduction of new or enhanced products could adversely affect our business, results of operations and financial condition.
We rely on third-party infrastructure, software and services that could take significant time, and involve a complex transition, to replace or upgrade.
We rely on infrastructure, software and services licensed from third parties to offer our cloud-based supply chain management products. This infrastructure, software, and services, as well as related maintenance and updates, may not continue to be available to us on commercially reasonable terms, or at all. If we lose the right to use or upgrade any of these licenses, our customers could experience delays or be unable to access our products until we can obtain and integrate equivalent technology. There might not always be commercially reasonable alternatives to the third-party infrastructure, software, and services that we currently license. Any such alternatives could be more difficult or costly to replace than what we currently license, and integration of the alternatives into our cloud-based products could require significant work and resources and delays. Any delays or failures associated with our cloud-based products could damage our reputation with current and potential customers and have an adverse effect on our business.
img_1.jpg SPS COMMERCE, INC.
17
Form 10-K for the Annual Period ended December 31, 2023

Interruptions or delays from third-party data centers or to the telecommunications infrastructure we use or rely on could impair the delivery of our products and our business could suffer.
We use third-party data centers, located in the U.S. and internationally, as well as provision services from cloud providers, to conduct our operations. Our ability to deliver our services depends on the development and maintenance of telecommunications infrastructure by third parties. This includes maintenance of a reliable network backbone with the necessary speed, data capacity, bandwidth capacity, and security. Our operations depend on the protection of the equipment and information we store in these third-party centers, or utilize from third-party providers, against damage or service interruptions that may be caused by fire, flood, severe storm, power loss, telecommunications failures, natural disasters, war, criminal act, military action, terrorist attack, financial failure of the service provider, and other events beyond our control. In addition, third-party malfeasance, such as intentional misconduct by computer hackers, unauthorized intrusions, computer viruses, ransomware, or denial of service attacks, may also cause substantial service disruptions. A prolonged service disruption affecting our products could damage our reputation with potential customers, cause us to lose existing customers, expose us to liability, or otherwise adversely affect our business. We may also incur significant costs for using alternative equipment or taking other actions in preparation for, or in reaction to, events that damage the data centers or infrastructure we use or rely on, including the additional expense of transitioning to substitute facilities or service providers.
A failure to protect the integrity and security of our customers’ information and prevent cyber-attacks could materially damage our reputation, expose us to claims and litigation, and lead to service disruptions and harm our business. Additionally, the growing costs to avoid or reduce the risks of such a failure could adversely affect our results of operations.
As demonstrated by the frequency and sophistication of material and high-profile data security breaches within the retail industry; computer malware, viruses, computer hacking, phishing attacks, spamming, ransomware, and other cyber threats have become more prevalent in our industry. Given the interconnected nature of the retail supply chain, our significant presence in the retail industry, and the occurrence of cyber-attacks on our system in the past, we believe that we are a target for such attacks.
Our business involves the collection and use of confidential information of our customers and their trading partners which sometimes requires our direct access to our customers’ information systems. Our security measures may be breached as a result of third-party action, including intentional misconduct by computer hackers via cyber-attacks, employee error, malfeasance, system errors or vulnerabilities, including vulnerabilities of our third-party vendors and customers, and result in someone obtaining unauthorized access to our customers’ information and information systems. Additionally, third parties may attempt to fraudulently induce employees or customers into disclosing sensitive information such as usernames, passwords, or other information in order to gain access to our customers’ data or our data or IT systems. Because the techniques used to obtain unauthorized access, or to sabotage systems, change frequently and generally are not recognized until launched against a target, we may be unable to anticipate these techniques or to implement adequate preventative measures. Malicious third parties may also conduct attacks designed to temporarily deny customers access to our services.
Any failure to maintain performance, reliability, security and availability of our cloud-based products to the satisfaction of our customers, or any unauthorized access to our customers’ information or systems may cause service disruptions, harm our reputation, impair our ability to retain existing customers and attract new customers and expose us to legal claims or government action, each of which could have a material adverse impact on our financial condition, results of operations and growth prospects. Although we are allocating more resources to address cyber threats and safeguard our products and services, including insurance in the event of a breach, we cannot assure you that these efforts to protect this confidential information and prevent unauthorized access to such information systems will be successful, and the growing costs related to these efforts could adversely affect our results of operations. In addition, because of the critical nature of information security and system access, any actual or perceived failure of our security measures could cause existing or potential customers not to use our products and harm our reputation.
img_1.jpg SPS COMMERCE, INC.
18
Form 10-K for the Annual Period ended December 31, 2023

Businesses in the retail industry have experienced material sales declines after discovering data security breaches, and our business could be similarly impacted in the event of a breach or other cyber incident. Furthermore, many U.S. states and international jurisdictions have enacted laws requiring companies to notify consumers of data security breaches involving their personal data. Additionally, the SEC recently issued final rules related to cybersecurity risk management and incident disclosure, which may further increase our required disclosures and cost of compliance in such events. These mandatory disclosures regarding a data security breach or other cyber incident often lead to widespread negative publicity, which may cause our customers to lose confidence in our products and the effectiveness of our data security measures. If we fail to comply with these laws and regulations, we could be subject to enforcement action or litigation, which could harm our business.
We may experience service failures or interruptions due to defects in the hardware, software, infrastructure, third-party components or processes that comprise our existing or new products, any of which could adversely affect our business.
Technology products like ours may contain undetected defects in the hardware, software, infrastructure, third-party components or processes that are part of the products we provide. If these defects lead to service failures, we could experience delays or lost revenues, diversion of technology resources, negative media attention or increased service costs as a result of performance-based claims during the period required to correct the cause of the defects. We cannot be certain that defects will be avoided in our upgraded or new products, resulting in loss of, or delay in, market acceptance, which could have an adverse effect on our business, results of operations and financial condition.
Because customers use our cloud-based supply chain management products for critical business processes, any defect in our products, any disruption to our products or any error in execution could cause recurring revenue customers to cancel their contracts with us, cause potential customers to not join our network and harm our reputation. We could also be subject to litigation for actual or alleged losses to our customers, which may require us to spend significant time and money in litigation or arbitration or to pay significant settlements or damages. We do not currently maintain any warranty reserves. Moreover, defending a lawsuit, regardless of its merit, could be costly and divert management’s attention and could cause our business to suffer.
The insurers under our existing liability insurance policy could deny coverage of a future claim that results from an error or defect in our technology or a resulting disruption in our products, or our existing liability insurance might not be adequate to cover any or all of the damages and other costs of such a claim. Moreover, we cannot assure you that our current liability insurance coverage will continue to be available to us on acceptable terms or at all. The successful assertion against us of one or more large claims that exceeds, or is not insured by, our insurance coverage, or the occurrence of changes in our liability insurance policy, including an increase in premiums or imposition of large deductible or co-insurance requirements, could have an adverse effect on our business, financial condition, and operating results.
If open source, or other no-cost products and services, expand into enterprise application and supply chain software or products, our prices, revenues, and operating results may decline.
The open source community comprises many different formal and informal groups of software developers and individuals who have created a wide variety of software and have made that software available for use, distribution, and modification, often free of charge. If developers contribute effective and scalable enterprise and supply chain application software to the open source community, or if competitors make such software or service available at no cost, we may need to lower our product pricing and alter our distribution strategy to compete successfully, and our revenues and operating results may decline as a result.
The use of open source software in our products may expose us to additional risks and harm our intellectual property.
Some of our products use or incorporate software that is subject to one or more open source licenses. Open source software is typically licensed under terms that require making the software freely accessible, usable, and modifiable. Failure to comply with these licenses may subject us to onerous requirements, such as offering our products that incorporate the open source software for no cost or making the source code we create based upon, incorporating, or using the open source software available for modifications or derivative works. If an author or third-party that distributes such open source software were to allege that we had not complied with the conditions of one or more of these licenses, we could be required to incur significant legal expenses defending against such allegations and could be subject to significant damages, enjoined from the sale of our services that contained the open source software and required to comply with the foregoing conditions, which could disrupt the distribution and sale of some of our products.
img_1.jpg SPS COMMERCE, INC.
19
Form 10-K for the Annual Period ended December 31, 2023

While we monitor the use of open source software in our products, processes and technology and work to ensure that open source software is not used in such a way as to require us to disclose the source code to the related product or products, such use could inadvertently occur. Additionally, if a third-party software provider has incorporated certain types of open source software into software we license from such third-party for our products, we could, under certain circumstances, be required to disclose the source code to our products. This could harm our intellectual property position and have a material adverse effect on our business, results of operations and financial condition.
If we fail to protect our intellectual property and proprietary rights adequately, our business could suffer material adverse effects.
We believe that proprietary technology is essential to establishing and maintaining our leadership position. We seek to protect our intellectual property through trade secrets, copyrights, confidentiality, non-compete and nondisclosure agreements, license agreements, trademarks, domain names and other measures, some of which afford only limited protection. We do not have any registered copyrights. Despite our efforts to protect our proprietary rights, unauthorized parties may attempt to copy or reverse engineer aspects of our technology or to obtain and use information that we regard as proprietary. We cannot assure you that our means of protecting our proprietary rights will be adequate or that our competitors will not independently develop similar or superior technology or design around our intellectual property. In addition, the laws of some foreign countries do not protect our proprietary rights to the same extent as the laws of the U.S. and intellectual property protections may also be unavailable, limited or difficult to enforce in some countries, which could make it easier for competitors to capture market share. Our failure to adequately protect our intellectual property and proprietary rights could adversely affect our business, financial condition, and results of operations.
In addition, if we resort to legal proceedings to enforce our intellectual property rights or to determine the validity and scope of the intellectual property or other proprietary rights of others, the proceedings could be burdensome and expensive, even if we were to prevail. Any such legal proceedings, including litigation, that are pursued in the future could result in substantial costs and diversion of resources and could have a material adverse effect on our business, operating results, or financial condition, regardless of whether we prevail in such proceedings.
An assertion by a third-party that we are infringing its intellectual property, whether or not correct, could subject us to costly and time-consuming litigation or expensive licenses and our business might be materially harmed.
The supply chain management industry and its enabling technologies are characterized by the existence of a large number of patents, copyrights, trademarks, and trade secrets and by frequent litigation based on allegations of infringement or other violations of intellectual property rights. As we seek to extend our products, we could be constrained by the intellectual property rights of others.
We might not prevail in any intellectual property infringement litigation against us given, among other reasons, the complex technical issues, and inherent uncertainties in such litigation. Moreover, defending such claims, regardless of their merit, could be time-consuming and distracting to management, result in costly litigation or settlement, cause development delays, require us to enter into royalty or licensing agreements or require us to redesign our products to avoid infringement. If our products violate any third-party proprietary rights, we could be required to withdraw those products from the market, re-develop those products or seek to obtain licenses from third parties, which might not be available on reasonable terms or at all. Any efforts to re-develop our products, obtain licenses from third parties on favorable terms or license a substitute technology might be unsuccessful and, in any case, might substantially increase our costs and harm our business, financial condition and operating results. We also face risk of infringement or misappropriation claims if we hire an employee or contractor who possesses third-party proprietary information and who decides to use such information in connection with our products, services, or business processes without such third-party’s authorization. Regardless of the source of such misuse of third-party intellectual property, any resulting withdrawal of our products from the market might materially harm our business, financial condition, and operating results.
In addition, we incorporate open source software into our cloud-based products. Given the nature of open source software, third parties might assert copyright and other intellectual property infringement claims against us based on our use of certain open source software programs. The terms of many open source licenses to which we are subject have not been interpreted by U.S. or foreign courts, and there is a risk that those licenses could be construed in a manner that imposes unanticipated conditions or restrictions on our ability to commercialize our products. In that event, we could be required to seek licenses from third parties in order to continue offering our products, to re-develop our products or to discontinue sales of our products, or to release our proprietary software code under the terms of an open source license, any of which could have a material adverse effect on our business.
img_1.jpg SPS COMMERCE, INC.
20
Form 10-K for the Annual Period ended December 31, 2023

Regulation
Privacy concerns and laws, evolving regulation of the internet and cloud computing, cross-border data transfer restrictions and other domestic or foreign regulations may limit the use and adoption of our products and adversely affect our business.
Regulation related to the provision of services on the internet is increasing, as federal, state, and foreign governments continue to adopt new laws and regulations addressing eCommerce generally, data privacy and the collection, processing, storage and use of personal information, including but not limited to the European Union's General Data Protection Regulation. We are particularly sensitive to these risks because the internet and the collection, processing, storage, and use of personal information are critical components of our cloud-based business model. Further, laws are increasingly aimed at the use of personal information for marketing purposes, such as the European Union’s e-Privacy Directive, and the country-specific regulations that implement that directive. Such laws and regulations are subject to differing interpretations and are inconsistent among jurisdictions. These and other requirements could reduce demand for our products or restrict our ability to store and process data or, in some cases, impact our ability to offer, or develop new, services and products in certain locations.
In addition to government activity, privacy advocacy and other industry groups have established or may establish new self-regulatory standards that may place additional burdens on us. Our customers may expect us to meet voluntary certification or other standards established by third parties. If we are unable to maintain these certifications or meet these standards, it could adversely affect our ability to provide our products to certain customers and could harm our business.
The costs of compliance with and other burdens imposed by laws, regulations and standards are significant and may limit the use and adoption of our services and reduce overall demand for them, or lead to material fines, penalties, or liabilities for noncompliance.
Furthermore, concerns regarding data privacy may cause our customers’ customers to resist providing the data necessary to allow our customers to use our service effectively. Even the perception that the privacy of personal information is not satisfactorily protected or does not meet regulatory requirements could inhibit sales and adoption of our cloud-based products.
Industry-specific regulation is evolving, and unfavorable or burdensome industry-specific laws, regulations or interpretive positions could harm our business.
Our customers and potential customers do business in a variety of industries. Regulators in certain industries have adopted and may in the future adopt regulations or interpretive positions regarding the use of cloud computing and other outsourced services. The costs of compliance with, and other burdens imposed by, industry-specific laws, regulations and interpretive positions may limit customers’ use and adoption of our services and reduce overall demand for our services. In addition, an inability to satisfy the standards of certain voluntary third-party certification bodies that our customers may expect may have an adverse impact on our business. If in the future we are unable to achieve or maintain these industry-specific certifications or other requirements or standards relevant to our customers, it may harm our business.
In some cases, industry-specific laws, regulations, or interpretive positions may also apply directly to us as a service provider. Any failure or perceived failure by us to comply with such requirements could have an adverse impact on our business.
Ownership of Our Common Stock
Our results of operations may fluctuate in the future, which could result in volatility in our stock price.
Our quarterly revenues and results of operations have varied in the past and may fluctuate in the future. Fluctuations in our results of operations may be due to a number of factors, including, but not limited to, those listed below and identified throughout this “Risk Factors” section:
our ability to retain and increase sales to customers and attract new customers, including our ability to maintain and increase our number of recurring revenue customers;
the timing and success of introductions of new products or upgrades by us or our competitors;
the strength of the U.S. and global economy, in particular, as it affects the U.S. retail sector;
the financial condition of our customers;
changes in our pricing policies or those of our competitors;
img_1.jpg SPS COMMERCE, INC.
21
Form 10-K for the Annual Period ended December 31, 2023

competition, including entry into the industry by new competitors;
the amount and timing of our expenses, including stock-based compensation and expenditures related to expanding our operations, attracting and retaining talent, supporting new customers, performing research and development, or introducing new products;
changes in laws and regulations impacting our business;
regulatory compliance costs and unforeseen legal expenses, including litigation and settlement costs;
the timing, size, integration and operational success of potential future acquisitions;
changes in the payment terms for our products; and
system or service failures, security breaches or network downtime.
Due to the foregoing factors, and other risks, including those identified in this “Risk Factors” section, comparing our operating results on a period-to-period basis may not be meaningful. You should not rely on these comparisons of our past results of operations as an indication of our future performance.
Our operating results in one or more future quarters may fluctuate, fall below the expectations of securities analysts and investors, or be less than any guidance we may provide to the market. If this occurs, the trading price of our common stock could decline significantly.
Our charter documents and Delaware law may delay, discourage, or inhibit a takeover that stockholders consider favorable.
Provisions of our certificate of incorporation and bylaws and applicable provisions of Delaware law may delay, discourage, or inhibit transactions involving an actual or potential change in our control or change in our management, including transactions in which stockholders might otherwise receive a premium for their shares, or transactions that our stockholders might otherwise deem to be in their best interests, and may ultimately result in the market price of our common stock being lower than it would be without these provisions. These provisions:
permit our board of directors to issue up to 5,000,000 shares of preferred stock, with any rights, preferences and privileges as our board may designate, including the right to approve an acquisition or other change in our control;
provide that the authorized number of directors may be changed by resolution of the board of directors;
provide that all vacancies, including newly created directorships, may, except as otherwise required by law, be filled by the affirmative vote of a majority of directors then in office, even if less than a quorum;
provide that stockholders seeking to present proposals before a meeting of stockholders or to nominate candidates for election as directors at a meeting of stockholders must provide notice in writing in a timely manner, and also specify requirements as to the form and content of a stockholder’s notice; and
do not provide for cumulative voting rights.
In addition, Section 203 of the Delaware General Corporation Law generally limits our ability to engage in any business combination with certain persons who own 15% or more of our outstanding voting stock or any of our associates or affiliates who at any time in the past three years have owned 15% or more of our outstanding voting stock. These provisions may have the effect of entrenching our management team and may deprive you of the opportunity to sell your shares to potential acquirers at a premium over prevailing prices. This potential inability to obtain a control premium could reduce the price of our common stock.
We do not intend to declare dividends on our stock in the foreseeable future.
We currently intend to retain all future earnings for the operation and expansion of our business and, therefore, do not anticipate declaring or paying cash dividends on our common stock in the foreseeable future. Investors may need to sell all or part of their holdings of our common stock after price appreciation, which may never occur, as the only way to realize any future gains on their investment. Any payment of future cash dividends on our common stock will be at the discretion of our board of directors and will depend upon our results of operations, earnings, capital requirements, financial condition, future prospects, contractual restrictions, and other factors deemed relevant by our board of directors. Therefore, you should not expect to receive dividend income from shares of our common stock.
img_1.jpg SPS COMMERCE, INC.
22
Form 10-K for the Annual Period ended December 31, 2023

General
Our failure to maintain adequate internal control over financial reporting in accordance with Section 404 of the Sarbanes-Oxley Act of 2002 or to prevent or detect material misstatements in our annual or interim financial statements in the future could result in inaccurate financial reporting, or could otherwise harm our business and investor confidence in our financial reporting.
Ensuring that we have internal financial and accounting controls and procedures adequate to produce accurate financial statements on a timely basis is a costly and time-consuming effort that needs to be re-evaluated periodically. The Sarbanes-Oxley Act requires, among other things, that we maintain effective internal control over financial reporting and disclosure controls and procedures. In particular, we are required to perform annual system and process evaluation and testing of our internal control over financial reporting to allow management and our independent registered public accounting firm to report on the effectiveness of our internal control over financial reporting, as required by Section 404 of the Sarbanes-Oxley Act. Furthermore, implementing any appropriate future changes to our internal control over financial reporting may entail substantial costs in order to modify our existing accounting systems, may take a significant period of time to complete and may distract our officers, directors, and employees from the operation of our business. If we are not able to comply with the requirements of Section 404 in the future, or if material weaknesses are identified, our business could be harmed and investor confidence in our financial reporting diminished.
Item 1B.    Unresolved Staff Comments
None.
Item 1C.    Cybersecurity
We have an established security program and framework based on ISO/IEC 27001 (“Security Program”) and maintain ISO/IEC 27001:2013, SOC 1 Type 2, and SOC 2 Type 2 certifications. The Security Program has been established to allow management oversight of cybersecurity risks, institute directives and principles for information security, ensure alignment to regulatory and contractual cybersecurity obligations, and enable timely incident response and remediation.
Our information and security team, led by our Chief Information Security Officer (“CISO”), have implemented and continue to maintain various technical, physical, and administrative processes, policies, and standards as the foundation of our Security Program, which are designed to help us manage and mitigate risks from cybersecurity threats, including, but not limited to, incident detection and response plans, vulnerability management processes, risk assessments, disaster recovery and business continuity plans, access controls, asset management, logging and monitoring, security awareness training, and third-party risk management programs.
Our CISO and information security team actively monitor and evaluate our networks, systems, data, and security risk profile to identify and assess cybersecurity risks. The information security team uses a variety of methods to identify and assess these risks, including, conducting networks scans, using manual and automated tools, conducting vulnerability and maturity assessments, and subscribing to services and reports providing threat intelligence.
In addition, we use a variety of third-party service providers to support and execute on our Security Program. These third parties provide cybersecurity consulting services, cybersecurity software, penetration testing, audits, and other professional services to aid us in identifying, assessing, and managing risks from cybersecurity threats.
Our Security Program is managed by our Executive Security Steering Committee ("ESSC"), comprised of selected members of leadership, including our CISO, which assesses and manages any material risks from cybersecurity threats. The CISO and security team provide regular updates to the ESSC on our Security Program and, in accordance with our security incident response plan, escalate applicable cybersecurity threats or incidents to the ESSC for review and management.
img_1.jpg SPS COMMERCE, INC.
23
Form 10-K for the Annual Period ended December 31, 2023

Our Audit Committee of our board of directors oversees our risk management processes related to cybersecurity risks and is regularly informed of such risks through presentations or reports from our CISO. In addition, our security incident response plan includes reporting certain cybersecurity incidents to our Audit Committee. Finally, our board of directors reviews cybersecurity risks on an annual basis, including discussing with management and members of the ESSC our strategy surrounding prevention, detection, mitigation, and remediation of potential security threats. While we have experienced cybersecurity incidents and expect to continue to be subject to such incidents, to date, we have not experienced any cybersecurity incidents that have materially affected our business, financial condition, or results of operations. However, we are subject to ongoing risks from cybersecurity threats that could materially affect us, including our business, financial condition, or results of operations, as further described in Part I, Item 1A, "Risk Factors" of this Annual Report on Form 10-K.
Item 2.    Properties
Our corporate headquarters, including our principal administrative, marketing, sales, technical support, and research and development facilities, are located in Minneapolis, Minnesota. This location includes approximately 198,000 square feet of space and is under lease through 2027. We lease other smaller facilities across the U.S. and international locations. We believe that our current facilities are suitable and adequate to meet our current needs and that suitable additional or substitute space will be available as needed to accommodate expansion of our operations. For additional information regarding obligations under operating leases, see Note I of our consolidated financial statements, included in Part II, Item 8, “Financial Statements and Supplementary Data” of this Annual Report on Form 10-K.
Item 3.    Legal Proceedings
We are not currently subject to, or aware of, any claims or actions that would have a material adverse effect on our business, financial condition, or results of operations. From time to time, we may be named as a defendant in legal actions or otherwise be subject to claims arising from our normal business activities. We believe that we have obtained adequate insurance coverage and/or rights to indemnification in connection with potential legal proceedings that may arise.
Item 4.    Mine Safety Disclosures
Not applicable.
img_1.jpg SPS COMMERCE, INC.
24
Form 10-K for the Annual Period ended December 31, 2023

PART II
Item 5.    Market for Registrant’s Common Equity, Related Stockholder Matters, and Issuer Purchases of Equity Securities
Market Information - Our common stock is and has been traded on the Nasdaq Global Market under the symbol “SPSC” since April 22, 2010, the date of our initial public offering.
Stockholders of Record - As of February 13, 2024, we had 69 stockholders of record of our common stock, excluding holders whose stock is held either in nominee name and/or street name brokerage accounts.
Dividends - We have not declared or paid cash dividends on our common stock. We currently intend to retain our future earnings, if any, to finance the operation and expansion of our business, and, therefore, we do not expect to pay cash dividends on our common stock in the foreseeable future. Payment of future cash dividends, if any, will be at the discretion of our board of directors after taking into account various factors, including our financial condition, operating results, current and anticipated cash needs, outstanding indebtedness and plans for expansion and restrictions imposed by lenders, if any.
Stock Performance Graph and Cumulative Total Return
Notwithstanding any statement to the contrary in any of our previous or future filings with the SEC, the following information relating to the price performance of our common stock shall not be deemed to be “filed” with the SEC or to be “soliciting material” under the Securities Exchange Act of 1934, as amended, (“Exchange Act”), and it shall not be deemed to be incorporated by reference into any of our filings under the Securities Act of 1933, as amended (“Securities Act”), or the Exchange Act, except to the extent we specifically incorporate it by reference into such filing.
The graph below compares the cumulative total stockholder return of our common stock with that of the Russell 1000 Index and the Nasdaq Computer Index from December 31, 2018 through December 31, 2023, utilizing the last trading day of each respective year. The return assumes that $100 was invested in shares of our common stock and the other indexes at the close of market on December 31, 2018, and that dividends, if any, were reinvested. In our Annual Report on Form 10-K for the year ended December 31, 2022, we compared our return to the Nasdaq US Benchmark TR Index. In 2023 and going forward, we will use the Russell 1000 Index as we believe it is now more reflective of the market we serve and is a more appropriate index to compare our stock performance. The comparison in this graph is based on historical data and is not intended to forecast or be indicative of future performance of our common stock.

Comparison of Cumulative Total Returns of SPS Commerce, Inc. to Comparable Indexes
1376
Recent Sales of Unregistered Securities; Use of Proceeds from Sales of Registered Securities
Not applicable.
img_1.jpg SPS COMMERCE, INC.
25
Form 10-K for the Annual Period ended December 31, 2023

Purchases of Equity Securities by the Issuer and Affiliated Purchasers
On July 26, 2022 (announced July 27, 2022), our board of directors authorized a program to repurchase up to $50.0 million of our common stock. Under the program, purchases may be made from time to time in the open market or in privately negotiated purchases, or both. The new share repurchase program became effective August 26, 2022 and expires on July 26, 2024.
We did not make any repurchases under the program during the quarter ended December 31, 2023. For more information regarding our share repurchase programs, refer to Note J to our consolidated financial statements, included in Part II Item 8, "Financial Statements and Supplementary Data" of this Annual Report on Form 10-K.
Item 6.    [Reserved]
img_1.jpg SPS COMMERCE, INC.
26
Form 10-K for the Annual Period ended December 31, 2023

Item 7.    Management’s Discussion and Analysis of Financial Condition and Results of Operations
The following discussion and analysis of our financial condition and results of operations should be read together with our audited consolidated financial statements and related notes which are included in Part II, Item 8, “Financial Statements and Supplementary Data” of this Annual Report on Form 10-K. Our actual results could differ materially from those anticipated in the forward-looking statements included in this discussion as a result of certain factors, including, but not limited to, those discussed in Part I, Item 1A, “Risk Factors” of this Annual Report on Form 10-K.
Overview
SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.
Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.
We plan to continue to grow our business by further penetrating the supply chain management market, increasing revenues from our customers as their businesses grow, expanding our distribution channels, expanding our international presence and, from time to time, developing new products and applications. We also intend to selectively pursue acquisitions that will add customers, allow us to expand into new regions, or allow us to offer new functionalities.
Key Financial Terms, Metrics and Non-GAAP Financial Measures
Sources of Revenues
Fulfillment - Our Fulfillment product is a full-service EDI solution that scales as a business grows. Companies can use a single system to manage orders and logistics from all sales channels, including wholesale, eCommerce, and marketplaces. Fulfillment is configurable for any trading partner, document or business system used for order management and offers a full suite of tools to help businesses efficiently manage their supply chain.
Analytics - Our Analytics product enables organizations to improve visibility into how products are selling through a single connection across all sales channels, including wholesale, eCommerce, and marketplaces. Analytics improves access and usage of sales and inventory data through a combination of our analytics applications, network of connections, and industry-leading expertise.
Other Products - We provide several complementary products, such as:
Assortment - Our Assortment product simplifies the communication of robust, accurate item data by automatically translating item attributes, and hierarchies through a single connection across all sales channels.
Community - Our Community product allows organizations to accelerate digitization of their supply chain and improve collaboration with suppliers through proven change management and onboarding programs.
Cost of Revenues and Operating Expenses
Cost of Revenues - Cost of revenues consist primarily of personnel, stock-based compensation, and technology costs for our customer success and implementation teams, customer support personnel, and application support personnel, as well as amortization related to internally developed software.
Sales and Marketing Expenses - Sales and marketing expenses consist primarily of personnel costs and stock-based compensation expense for our sales, marketing, product management teams, and commissions earned by our sales personnel and referral partners.
Research and Development Expenses - Research and development expenses consist primarily of personnel, stock-based compensation, and technology costs for development of new and maintenance of existing products, net of amounts capitalized as developed software.
img_1.jpg SPS COMMERCE, INC.
27
Form 10-K for the Annual Period ended December 31, 2023

General and Administrative Expenses - General and administrative expenses consist primarily of personnel, stock-based compensation, and technology costs for finance, human resources, and internal technology support, as well as professional services and other fees, such as bad debt expense and credit card processing fees.
Overhead Allocation - We allocate overhead expenses such as rent, certain employee benefit costs, certain software costs, and depreciation of general office assets to cost of revenues and operating expenses categories based on expense type using department headcount or salary.
Amortization of Intangibles Assets - Amortization expense consists of the expense recognition of acquired intangible assets over their estimated useful lives.
Other Income (Expense), net
Other income (expense) consists primarily of realized gain (loss) from foreign currency on cash and investments held and investment income.
Income Tax Expense
Income tax expense consists primarily of income taxes for U.S. federal jurisdiction in addition to income taxes for various state and international jurisdictions.
Metrics and Non-GAAP Financial Measures
Recurring Revenue Customers - As of December 31, 2023, we had approximately 44,800 customers with ongoing contracts to pay us monthly fees, which we refer to as recurring revenue customers. A small portion of our recurring revenue customers consist of separate units within a larger organization and are separately invoiced. We treat each of these units, which may include divisions, departments, affiliates and franchises, as distinct recurring revenue customers.
Wallet Share - We calculate average recurring revenues per recurring revenue customer, which we also refer to as wallet share, by dividing the recurring revenues from recurring revenue customers for the period by the average of the beginning and ending number of recurring revenue customers for the period.
Non-GAAP Financial Measures - To supplement our consolidated financial statements, we provide investors with Adjusted EBITDA, Adjusted EBITDA Margin, and non-GAAP income per share, all of which are non-GAAP financial measures. We believe that these non-GAAP financial measures provide useful information to our management, board of directors, and investors regarding certain financial and business trends relating to our financial condition and results of operations.
Our management uses these non-GAAP financial measures to compare our performance to that of prior periods for trend analyses and planning purposes. Adjusted EBITDA is also used for purposes of determining executive and senior management incentive compensation. We believe these non-GAAP financial measures are useful to an investor as they are widely used in evaluating operating performance. Adjusted EBITDA and Adjusted EBITDA Margin are used to measure operating performance without regard to items such as depreciation and amortization, which can vary depending upon accounting methods and the book value of assets, and to present a meaningful measure of corporate performance exclusive of capital structure and the method by which assets were acquired.
These non-GAAP financial measures should not be considered a substitute for, or superior to, financial measures calculated in accordance with GAAP. These non-GAAP financial measures exclude significant expenses and income that are required by GAAP to be recorded in our consolidated financial statements and are subject to inherent limitations. Investors should review the reconciliations of non-GAAP financial measures to the comparable GAAP financial measures that are included in this “Management’s Discussion and Analysis of Financial Condition and Results of Operations.
Critical Accounting Policies and Estimates
The discussion of our financial condition and results of operations is based upon our consolidated financial statements, which are prepared in accordance with GAAP. The preparation of these consolidated financial statements requires us to make estimates, judgments, and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and related disclosures. On an ongoing basis, we evaluate our estimates, judgments, and assumptions. We base our estimates of the carrying value of certain assets and liabilities on historical experience and on various other assumptions that we believe to be reasonable. Our actual results may differ from these estimates under different assumptions or conditions.
img_1.jpg SPS COMMERCE, INC.
28
Form 10-K for the Annual Period ended December 31, 2023

A critical accounting policy or estimate is one that is both material to the presentation of our financial statements and requires us to make difficult, subjective, or complex judgments relating to uncertain matters that could have a material effect on our financial condition and results of operations. Accordingly, we believe that our policies for revenue recognition, internally developed software, and business combinations are the most critical to fully understand and evaluate our financial condition and results of operations.
Revenue Recognition
Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services. Set-up fees are specific for each connection a customer has with a trading partner. These nonrefundable fees are necessary for our customers to utilize our services and do not provide any standalone value. Many of our customers have connections with numerous trading partners.
Set-up fees constitute a material renewal option right that provide customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. As such, set-up fees and related costs are deferred and recognized ratably, generally over two years, which is the estimated period for which a material right is present for our customers.
Internally Developed Software
Internally developed software consists of capitalized costs incurred during the application development stage, which include costs related to the design of the chosen path, coding, installation of the hardware necessary to run the software, and any testing done before the operational stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Additionally, maintenance of internally developed software are expensed as incurred. Internally developed software is amortized over the estimated useful life, three years, commencing on the date when the asset is ready for its intended use. Amortization is computed using the straight-line method.
Business Combinations
We allocate the fair value of purchase consideration to the tangible assets acquired, liabilities assumed, and intangible assets acquired based on their estimated fair values as of the acquisition date. The excess of the fair value of purchase consideration over the fair values of these identifiable assets and liabilities is recorded as goodwill. Such valuations may require us to make significant estimates and assumptions, especially with respect to intangible assets.
Significant estimates in valuing certain intangible assets may include, but are not limited to, future expected cash flows from acquired customers and developed technology from a market participant perspective, useful lives, and discount rates. Significant estimates in valuing liabilities for contingent consideration may include, but are not limited to, discount rates, projected financial results of the acquired businesses based on our most recent internal forecasts, and factors indicating the probability of achieving the forecasted results.
Our estimates of fair value are based upon assumptions believed to be reasonable, but which are inherently uncertain and unpredictable and, as a result, actual results may differ from estimates. During the measurement period, which is not to exceed one year from the acquisition date, we may record adjustments to the assets acquired and liabilities assumed, with the corresponding offset to goodwill. Upon the conclusion of the measurement period, any subsequent adjustments are recorded to earnings.
img_1.jpg SPS COMMERCE, INC.
29
Form 10-K for the Annual Period ended December 31, 2023

Results of Operations
Year Ended December 31, 2023 Compared to Year Ended December 31, 2022
The following table presents our results of operations for the periods indicated:
Year Ended December 31,
20232022Change
($ in thousands)$
% of revenue(1)
$
% of revenue(1)
$%
Revenues$536,910 100.0 %$450,875 100.0 %$86,035 19.1 %
Cost of revenues182,069 33.9 153,065 33.9 29,004 18.9 
Gross profit354,841 66.1 297,810 66.1 57,031 19.2 
Operating expenses
Sales and marketing122,936 22.9 101,772 22.6 21,164 20.8 
Research and development53,654 10.0 45,748 10.1 7,906 17.3 
General and administrative84,887 15.8 67,340 14.9 17,547 26.1 
Amortization of intangible assets16,116 3.0 11,768 2.6 4,348 36.9 
Total operating expenses277,593 51.7 226,628 50.3 50,965 22.5 
Income from operations77,248 14.4 71,182 15.8 6,066 8.5 
Other income, net8,315 1.5 142 — 8,173 
NM(2)
Income before income taxes85,563 15.9 71,324 15.8 14,239 20.0 
Income tax expense19,739 3.7 16,190 3.6 3,549 21.9 
Net income$65,824 12.3 %$55,134 12.2 %$10,690 19.4 %
(1) Amounts in column may not foot due to rounding
(2) NM = "not meaningful"
Revenues - Revenues increased for the 92nd consecutive quarter. The increase in revenues resulted from two primary factors: the increase in recurring revenue customers, which is driven primarily by continued business growth and by business acquisitions, and the increase in average recurring revenues per recurring revenue customer, which we also refer to as wallet share.
The number of recurring revenue customers increased 6% to approximately 44,800 at December 31, 2023 from approximately 42,300 at December 31, 2022 primarily due to sales and marketing efforts to acquire new customers and due to recent acquisitions.
Wallet share increased 10% to approximately $11,550 at December 31, 2023 from approximately $10,500 at December 31, 2022. This was primarily attributable to increased usage of our products by our recurring revenue customers.
Recurring revenues increased 20% to $502.0 million in 2023, as compared to 2022, and accounted for 94% and 93% of our total revenues in 2023 and 2022, respectively. We anticipate that the number of recurring revenue customers and wallet share will continue to increase as we execute our growth strategy focused on further penetrations of our market.
Cost of Revenues - The increase in cost of revenues was primarily due to increased headcount, which resulted in increases of $21.9 million in personnel-related costs and $3.0 million of software subscriptions. Additionally, the increase was due to a $1.5 million increase in stock-based compensation.
Sales and Marketing Expenses - The increase in sales and marketing expense was primarily due to increased headcount, which resulted in increases of $13.8 million in personnel-related costs and $2.7 million in variable compensation earned by sales personnel and referral partners. Additionally, the increase was due to a $2.2 million increase in stock-based compensation.
Research and Development Expenses - The increase in research and development expense was primarily due to increased headcount, which resulted in increases of $5.3 million in personnel-related costs and $1.2 million of software subscriptions. Additionally, the increase was due to a $1.6 million increase in stock-based compensation.
img_1.jpg SPS COMMERCE, INC.
30
Form 10-K for the Annual Period ended December 31, 2023

General and Administrative Expenses - The increase in general and administrative expense was primarily related to increased stock-based compensation of $6.9 million. Additionally, the increase was due to an increase in headcount which resulted in an increase in personnel-related costs of $6.3 million. Finally, there was an increase in bad debt expense of $2.3 million due primarily to overall business growth.
Amortization of Intangible Assets - The increase in amortization of intangible assets was driven by increased intangible assets related to recent business acquisitions.
Other Income (Expense) - The change was primarily due to increased investment income and favorable foreign currency exchange rate changes.
Income Tax Expense - The increase in income tax expense was driven by an increase in pre-tax income and an increase in nondeductible executive compensation. This was partially offset by an increase in excess tax benefits due to the current period equity award settlements. Excess tax benefits generated upon the settlement or exercise of stock awards are recognized as a reduction to income tax expense and, as a result, we expect that our annual effective income tax rate will fluctuate.
Adjusted EBITDA - Adjusted EBITDA consists of net income adjusted for income tax expense, depreciation and amortization expense, stock-based compensation expense, realized gain or loss from foreign currency on cash and investments held, investment income or loss, and other adjustments as necessary for a fair presentation. Other adjustments included the expense impacts from acquisition-related employee severance costs and disposals of certain capitalized internally developed software. Net income is the comparable GAAP measure of financial performance.
The following table provides a reconciliation of net income to Adjusted EBITDA:
Year Ended December 31,
(in thousands)20232022
Net income$65,824 $55,134 
Income tax expense19,739 16,190 
Depreciation and amortization of property and equipment18,631 16,421 
Amortization of intangible assets16,116 11,768 
Stock-based compensation expense45,508 33,399 
Realized (gain) loss from foreign currency on cash and investments held(1,726)1,026 
Investment income(7,660)(1,670)
Other1,198 — 
Adjusted EBITDA$157,630 $132,268 
Adjusted EBITDA Margin - Adjusted EBITDA Margin consists of Adjusted EBITDA divided by revenue. Margin, the comparable GAAP measure of financial performance, consists of net income divided by revenue.
The following table provides a comparison of Margin to Adjusted EBITDA Margin:
Year Ended December 31,
(in thousands, except Margin and Adjusted EBITDA Margin)20232022
Revenue$536,910 $450,875 
Net income65,824 55,134 
Margin12 %12 %
Adjusted EBITDA$157,630 $132,268 
Adjusted EBITDA Margin29 %29 %
Non-GAAP Income per Share - Non-GAAP income per share consists of net income adjusted for stock-based compensation expense, amortization expense related to intangible assets, realized gain or loss from foreign currency on cash and investments held, other adjustments as necessary for a fair presentation, including the expense impacts from acquisition-related employee severance costs and disposals of certain capitalized internally developed software, and the corresponding tax impacts of the adjustments to net income, divided by the weighted average number of shares of common and diluted stock outstanding during each period.
img_1.jpg SPS COMMERCE, INC.
31
Form 10-K for the Annual Period ended December 31, 2023

To quantify the tax effects, we recalculated income tax expense excluding the direct book and tax effects of the specific items constituting the non-GAAP adjustments. The difference between this recalculated income tax expense and GAAP income tax expense is presented as the income tax effect of the non-GAAP adjustments.
The following table provides a reconciliation of net income to non-GAAP income per share:
Year Ended December 31,
(in thousands, except per share amounts)20232022
Net income$65,824 $55,134 
Stock-based compensation expense45,508 33,399 
Amortization of intangible assets16,116 11,768 
Realized (gain) loss from foreign currency on cash and investments held(1,726)1,026 
Other1,198 — 
Income tax effects of adjustments(19,983)(14,639)
Non-GAAP income$106,937 $86,688 
Shares used to compute net income and non-GAAP income per share
Basic36,646 36,117 
Diluted37,475 36,953 
Net income per share, basic$1.80 $1.53 
Non-GAAP adjustments to net income per share, basic1.12 0.87 
Non-GAAP income per share, basic$2.92 $2.40 
Net income per share, diluted$1.76 $1.49 
Non-GAAP adjustments to net income per share, diluted1.09 0.86 
Non-GAAP income per share, diluted$2.85 $2.35 
Year Ended December 31, 2022 Compared to Year Ended December 31, 2021
The discussion of our results from operations for the year ended December 31, 2022 compared to the year ended December 31, 2021 can be found in Part II, Item 7, “Management’s Discussion and Analysis of Financial Condition and Results of Operations” in the Company’s Annual Report on Form 10-K for the year ended December 31, 2022.
Liquidity and Capital Resources
At December 31, 2023, our principal sources of liquidity were cash and cash equivalents and short-term investments totaling $275.4 million, and net accounts receivable of $46.8 million. Our investments are selected in accordance with our investment policy, with a goal to preserve principal, provide liquidity, and maximize income consistent with minimizing risk of material loss. Our cash equivalents and short-term investments are held in highly liquid instruments, primarily money market funds, certificates of deposits, and commercial paper.
The summary of activity within the consolidated statements of cash flows was as follows:
Year Ended December 31,
(in thousands)20232022
Net cash provided by operating activities$132,298 $100,052 
Net cash used in investing activities(92,642)(112,790)
Net cash provided by (used in) financing activities15,970 (31,631)
Net Cash Flows from Operating Activities
The increase in cash provided by operating activities was primarily driven by changes in the amount and timing of settlement of operating assets and liabilities, in addition to increased net income.
img_1.jpg SPS COMMERCE, INC.
32
Form 10-K for the Annual Period ended December 31, 2023

Net Cash Flows from Investing Activities
The decrease in net cash used in investing activities was primarily due to business acquisition activity.
Net Cash Flows from Financing Activities
The change in cash provided by (used in) financing activities was primarily due to the decrease in cash used for share repurchases.
Year Ended December 31, 2022 Compared to Year Ended December 31, 2021
The discussion of our liquidity and capital resources for the year ended December 31, 2022 compared to the year ended December 31, 2021 can be found in Part II, Item 7, “Management’s Discussion and Analysis of Financial Condition and Results of Operations” in the Company’s Annual Report on Form 10-K for the year ended December 31, 2022.
Contractual and Commercial Commitment Summary
Our contractual obligations and commercial commitments as of December 31, 2023 are summarized below:
Payments Due by Period
(in thousands)Less Than
1 Year
1-3 Years3-5 YearsMore Than
5 Years
Total
Operating lease obligations, including imputed interest$4,910 $8,641 $1,324 $76 $14,951 
Purchase commitments14,536 20,528 — — 35,064 
Total$19,446 $29,169 $1,324 $76 $50,015 
Future Capital Requirements
Our future capital requirements may vary significantly from those now planned and will depend on many factors, including:
costs to develop and implement new products and applications, if any;
sales and marketing resources needed to further penetrate our market and gain acceptance of new products and applications that we may develop;
expansion of our operations in the U.S. and internationally;
response of competitors to our products and applications; and
use of capital for acquisitions.
Historically, we have experienced increases in our expenditures consistent with the growth in our operations and personnel, and we anticipate that our expenditures will continue to increase as we expand our business.
We believe our cash, cash equivalents, investments, and cash flows from our operations will be sufficient to meet our working capital and capital expenditure requirements for at least the next twelve months.
Off-Balance Sheet Arrangements
We do not have any off-balance sheet arrangements, investments in special purpose entities or undisclosed borrowings or debt. Additionally, we are not a party to any derivative contracts or synthetic leases.
Foreign Currency Exchange and Inflation Rate Changes
For information regarding the effect of foreign currency exchange rate changes, refer to the section entitled “Foreign Currency Exchange Risk,” included in Part II, Item 7A, “Quantitative and Qualitative Disclosures About Market Risk” of this Annual Report on Form 10-K.
During the last three years, inflation and changing prices have not had a material effect on our business and we do not expect that inflation or changing prices will materially affect our business in the foreseeable future.
img_1.jpg SPS COMMERCE, INC.
33
Form 10-K for the Annual Period ended December 31, 2023

Recent Accounting Pronouncements
For information regarding recent accounting pronouncements, refer to Note A, General, in our Notes to Consolidated Financial Statements in the sections entitled “Accounting Pronouncements Recently Adopted” and “Accounting Pronouncements Not Yet Adopted” as applicable, included in Part II, Item 8, “Financial Statements and Supplementary Data” of this Annual Report on Form 10-K.
Item 7A.    Quantitative and Qualitative Disclosures About Market Risk
Interest Rate Sensitivity Risk
The principal objectives of our investment activities are to preserve principal, provide liquidity, and maximize income consistent with minimizing risk of material loss. We are exposed to market risk related to changes in interest rates. However, based on the nature and current level of our cash, cash equivalents, and investments, we believe there is no material risk exposure. We do not enter into investments for trading or speculative purposes.
We did not have any variable interest rate outstanding debt as of December 31, 2023. Therefore, we do not have any material risk to interest rate fluctuations.
Foreign Currency Exchange Risk
Due to international operations, we have revenue, expenses, assets, and liabilities that are denominated in currencies other than the U.S. dollar, primarily the Australian dollar, Canadian dollar, and Euro. Our consolidated balance sheet, results of operations, and cash flows are, therefore, subject to fluctuations due to changes in foreign currency exchange rates and may be adversely affected in the future due to changes in foreign exchange rates.
Our sales are primarily denominated in U.S. dollars. Our expenses are generally denominated in the local currencies in which our operations are located. As of December 31, 2023, we maintained 10% of our total cash and cash equivalents and investments in foreign currencies.
We believe that a hypothetical 10% change in foreign currency exchange rates or an inability to access foreign funds would not materially affect our ability to meet our operational needs, result in a material foreign currency loss, or have a material impact on our consolidated financial statements.
We have not used any forward contracts or currency borrowings to hedge our exposure to foreign currency exchange risk, although we may do so in the future.
img_1.jpg SPS COMMERCE, INC.
34
Form 10-K for the Annual Period ended December 31, 2023

Item 8.    Financial Statements and Supplementary Data
SPS Commerce, Inc. and Subsidiaries Consolidated Financial Statements
img_1.jpg SPS COMMERCE, INC.
35
Form 10-K for the Annual Period ended December 31, 2023

Report of Independent Registered Public Accounting Firm
To the Stockholders and Board of Directors
SPS Commerce, Inc.:
Opinion on the Consolidated Financial Statements
We have audited the accompanying consolidated balance sheets of SPS Commerce, Inc. and subsidiaries (the Company) as of December 31, 2023 and 2022, the related consolidated statements comprehensive income, stockholders’ equity, and cash flows for each of the years in the three-year period ended December 31, 2023, and the related notes (collectively, the consolidated financial statements). In our opinion, the consolidated financial statements present fairly, in all material respects, the financial position of the Company as of December 31, 2023 and 2022, and the results of its operations and its cash flows for each of the years in the three-year period ended December 31, 2023, in conformity with U.S. generally accepted accounting principles.
We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (PCAOB), the Company’s internal control over financial reporting as of December 31, 2023, based on criteria established in Internal Control – Integrated Framework (2013) issued by the Committee of Sponsoring Organizations of the Treadway Commission, and our report dated February 20, 2024 expressed an unqualified opinion on the effectiveness of the Company’s internal control over financial reporting.
Basis for Opinion
These consolidated financial statements are the responsibility of the Company’s management. Our responsibility is to express an opinion on these consolidated financial statements based on our audits. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.
We conducted our audits in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether the consolidated financial statements are free of material misstatement, whether due to error or fraud. Our audits included performing procedures to assess the risks of material misstatement of the consolidated financial statements, whether due to error or fraud, and performing procedures that respond to those risks. Such procedures included examining, on a test basis, evidence regarding the amounts and disclosures in the consolidated financial statements. Our audits also included evaluating the accounting principles used and significant estimates made by management, as well as evaluating the overall presentation of the consolidated financial statements. We believe that our audits provide a reasonable basis for our opinion.
Critical Audit Matter
The critical audit matter communicated below is a matter arising from the current period audit of the consolidated financial statements that was communicated or required to be communicated to the audit committee and that: (1) relates to accounts or disclosures that are material to the consolidated financial statements and (2) involved our especially challenging, subjective, or complex judgments. The communication of a critical audit matter does not alter in any way our opinion on the consolidated financial statements, taken as a whole, and we are not, by communicating the critical audit matter below, providing a separate opinion on the critical audit matter or on the accounts or disclosures to which it relates.
Assessment of the capitalized internal costs for internally developed software
As discussed in Note A to the consolidated financial statements, the Company capitalizes costs incurred for internally developed software during the application development stage. Capitalized internally developed software is recorded within property and equipment and depreciated over the estimated useful life.
We identified the assessment of the capitalized internal costs for internally developed software as a critical audit matter. Subjective auditor judgment was required to assess the stage of software development for new internally developed software or upgrades and enhancements for existing internally developed software, which determines when costs should be capitalized.
img_1.jpg SPS COMMERCE, INC.
36
Form 10-K for the Annual Period ended December 31, 2023

The following are the primary procedures we performed to address this critical audit matter. We evaluated the design and tested the operating effectiveness of certain internal controls related to the Company’s internally developed software process. This included controls related to the evaluation and approval of new internally developed software projects or upgrades and enhancements to existing internally developed software projects, monitoring of the software development stage, and capitalization of internal costs. We examined a sample of capitalized internally developed software costs to evaluate costs that were capitalized for new internally developed software or upgrades and enhancements for existing internally developed software. For each sample, we evaluated the capitalized costs and assessed the stage of software development by inspecting underlying documentation and inquiring of the Company’s technology developers performing the internally developed software activities regarding the specific nature, stage of completion, and hours incurred on the project.
/s/ KPMG LLP
We have served as the Company’s auditor since 2013.
Minneapolis, Minnesota
February 20, 2024














































img_1.jpg SPS COMMERCE, INC.
37
Form 10-K for the Annual Period ended December 31, 2023

Report of Independent Registered Public Accounting Firm
To the Stockholders and Board of Directors
SPS Commerce, Inc.:
Opinion on Internal Control Over Financial Reporting
We have audited SPS Commerce, Inc. and subsidiaries' (the Company) internal control over financial reporting as of December 31, 2023, based on criteria established in Internal Control – Integrated Framework (2013) issued by the Committee of Sponsoring Organizations of the Treadway Commission. In our opinion, the Company maintained, in all material respects, effective internal control over financial reporting as of December 31, 2023, based on criteria established in Internal Control – Integrated Framework (2013) issued by the Committee of Sponsoring Organizations of the Treadway Commission.
We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (PCAOB), the consolidated balance sheets of the Company as of December 31, 2023 and 2022, the related consolidated statements of comprehensive income, stockholders’ equity, and cash flows for each of the years in the three-year period ended December 31, 2023, and the related notes (collectively, the consolidated financial statements), and our report dated February 20, 2024 expressed an unqualified opinion on those consolidated financial statements.
The Company acquired TIE Kinetix Holding B.V. during 2023, and management excluded from its assessment of the effectiveness of the Company’s internal control over financial reporting as of December 31, 2023, TIE Kinetix Holding B.V.’s internal control over financial reporting associated with less than 5% of consolidated assets and less than 5% of consolidated revenues included in the consolidated financial statements of the Company as of and for the year ended December 31, 2023. Our audit of internal control over financial reporting of the Company also excluded an evaluation of the internal control over financial reporting of TIE Kinetix Holding B.V.
Basis for Opinion
The Company’s management is responsible for maintaining effective internal control over financial reporting and for its assessment of the effectiveness of internal control over financial reporting, included in the accompanying Management's Annual Report on Internal Control over Financial Reporting. Our responsibility is to express an opinion on the Company’s internal control over financial reporting based on our audit. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.
We conducted our audit in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether effective internal control over financial reporting was maintained in all material respects. Our audit of internal control over financial reporting included obtaining an understanding of internal control over financial reporting, assessing the risk that a material weakness exists, and testing and evaluating the design and operating effectiveness of internal control based on the assessed risk. Our audit also included performing such other procedures as we considered necessary in the circumstances. We believe that our audit provides a reasonable basis for our opinion.
Definition and Limitations of Internal Control Over Financial Reporting
A company’s internal control over financial reporting is a process designed to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles. A company’s internal control over financial reporting includes those policies and procedures that (1) pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of the assets of the company; (2) provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with generally accepted accounting principles, and that receipts and expenditures of the company are being made only in accordance with authorizations of management and directors of the company; and (3) provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of the company’s assets that could have a material effect on the financial statements.
Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.
/s/ KPMG LLP
Minneapolis, Minnesota
February 20, 2024
img_1.jpg SPS COMMERCE, INC.
38
Form 10-K for the Annual Period ended December 31, 2023

SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED BALANCE SHEETS
December 31,
(in thousands, except shares)20232022
ASSETS  
Current assets  
Cash and cash equivalents$219,081 $162,893 
Short-term investments56,359 51,412 
Accounts receivable50,160 42,501 
Allowance for credit losses(3,320)(3,066)
Accounts receivable, net46,840 39,435 
Deferred costs62,403 52,755 
Other assets16,758 16,319 
Total current assets401,441 322,814 
Property and equipment, net36,043 35,458 
Operating lease right-of-use assets7,862 9,170 
Goodwill249,176 197,284 
Intangible assets, net107,344 88,352 
Other assets
Deferred costs, non-current20,347 17,424 
Deferred income tax assets505 227 
Other assets, non-current1,126 2,185 
Total assets$823,844 $672,914 
LIABILITIES AND STOCKHOLDERS’ EQUITY
Current liabilities
Accounts payable$7,420 $11,256 
Accrued compensation41,588 30,235 
Accrued expenses8,014 7,451 
Deferred revenue69,187 57,423 
Operating lease liabilities4,460 4,277 
Total current liabilities130,669 110,642 
Other liabilities
Deferred revenue, non-current6,930 4,771 
Operating lease liabilities, non-current9,569 13,009 
Deferred income tax liabilities8,972 7,419 
Other liabilities, non-current229  
Total liabilities156,369 135,841 
Commitments and contingencies
Stockholders' equity
Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding
  
Common stock, $0.001 par value; 110,000,000 shares authorized; 38,971,146 and 38,309,144 shares issued; and 36,820,048 and 36,158,046 shares outstanding, respectively
39 38 
Treasury Stock, at cost; 2,151,098 shares
(128,892)(128,892)
Additional paid-in capital537,061 476,117 
Retained earnings259,045 193,221 
Accumulated other comprehensive gain (loss)222 (3,411)
Total stockholders’ equity667,475 537,073 
Total liabilities and stockholders’ equity$823,844 $672,914 
See accompanying notes to these consolidated financial statements.
img_1.jpg SPS COMMERCE, INC.
39
Form 10-K for the Annual Period ended December 31, 2023

SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME
 Year Ended December 31,
(in thousands, except per share amounts)202320222021
Revenues$536,910 $450,875 $385,276 
Cost of revenues182,069 153,065 131,678 
Gross profit354,841 297,810 253,598 
Operating expenses
Sales and marketing122,936 101,772 88,044 
Research and development53,654 45,748 39,038 
General and administrative84,887 67,340 61,305 
Amortization of intangible assets16,116 11,768 10,126 
Total operating expenses277,593 226,628 198,513 
Income from operations77,248 71,182 55,085 
Other income (expense), net8,315 142 (1,544)
Income before income taxes85,563 71,324 53,541 
Income tax expense19,739 16,190 8,944 
Net income$65,824 $55,134 $44,597 
Other comprehensive income (expense)
Foreign currency translation adjustments3,393 (2,240)(514)
Unrealized gain (loss) on investments, net of tax of $644, $147, and $(34), respectively
1,932 441 (102)
Reclassification of (gain) loss on investments into earnings, net of tax of $(564), $(55), and $63, respectively
(1,692)(165)190 
Total other comprehensive income (expense)3,633 (1,964)(426)
Comprehensive income$69,457 $53,170 $44,171 
Net income per share
Basic$1.80 $1.53 $1.24 
Diluted$1.76 $1.49 $1.21 
Weighted average common shares used to compute net income per share
Basic36,646 36,117 35,928 
Diluted37,475 36,953 36,962 
See accompanying notes to these consolidated financial statements.
img_1.jpg SPS COMMERCE, INC.
40
Form 10-K for the Annual Period ended December 31, 2023

SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY
Common StockTreasury Stock Additional
Paid-in
Capital
Retained
Earnings
Accumulated Other Comprehensive Gain (Loss)Total
Stockholders'
Equity
(in thousands, except shares)Shares AmountSharesAmount
Balances, December 31, 202035,487,217 $37 1,613,250 $(65,247)$393,462 $93,490 $(1,021)$420,721 
Stock-based compensation— — — — 25,686 — — 25,686 
Shares issued pursuant to stock awards642,417 1 — — 9,373 — — 9,374 
Employee stock purchase plan activity55,726 — — — 4,737 — — 4,737 
Repurchases of common stock(176,103)— 176,103 (20,430)— — — (20,430)
Net income— — — — — 44,597 — 44,597 
Foreign currency translation adjustments— — — — — — (514)(514)
Unrealized loss on investments, net of tax— — — — — — (102)(102)
Reclassification of loss on investments into earnings, net of tax— — — — — — 190 190 
Balances, December 31, 202136,009,257 $38 1,789,353 $(85,677)$433,258 $138,087 $(1,447)$484,259 
Stock-based compensation— — — — 31,275 — — 31,275 
Shares issued pursuant to stock awards440,427 — — — 4,908 — — 4,908 
Employee stock purchase plan activity70,107 — — — 6,676 — — 6,676 
Repurchases of common stock(361,745)— 361,745 (43,215)— — — (43,215)
Net income— — — — — 55,134 — 55,134 
Foreign currency translation adjustments— — — — — — (2,240)(2,240)
Unrealized gain on investments, net of tax— — — — — — 441 441 
Reclassification of gain on investments into earnings, net of tax— — — — — — (165)(165)
Balances, December 31, 202236,158,046 $38 2,151,098 $(128,892)$476,117 $193,221 $(3,411)$537,073 
Stock-based compensation— — — — 42,975 — — 42,975 
Shares issued pursuant to stock awards598,361 1 — — 9,855 — — 9,856 
Employee stock purchase plan activity63,641 — — — 8,114 — — 8,114 
Net income— — — — — 65,824 — 65,824 
Foreign currency translation adjustments— — — — — — 3,393 3,393 
Unrealized gain on investments, net of tax— — — — — — 1,932 1,932 
Reclassification of gain on investments into earnings, net of tax— — — — — — (1,692)(1,692)
Balances, December 31, 202336,820,048 $39 2,151,098 $(128,892)$537,061 $259,045 $222 $667,475 
See accompanying notes to these consolidated financial statements.
Picture1.jpg SPS COMMERCE, INC.
41
Form 10-K for the Annual Period ended December 31, 2023

SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED STATEMENTS OF CASH FLOWS
Year Ended December 31,
(in thousands)202320222021
Cash flows from operating activities
Net income$65,824 $55,134 $44,597 
Reconciliation of net income to net cash provided by operating activities
Deferred income taxes(10,079)(3,732)3,881 
Depreciation and amortization of property and equipment18,631 16,421 14,788 
Amortization of intangible assets16,116 11,768 10,126 
Provision for credit losses5,707 3,359 4,717 
Stock-based compensation45,508 33,399 27,574 
Other, net2,415 220 323 
Changes in assets and liabilities, net of effects of acquisitions
Accounts receivable(11,949)(6,435)(4,959)
Deferred costs(10,724)(10,646)(9,299)
Other assets and liabilities1,834 2,632 (6,181)
Accounts payable(3,947)144 2,259 
Accrued compensation7,143 (3,786)6,775 
Accrued expenses1,302 (2,829)1,017 
Deferred revenue6,464 5,965 14,483 
Operating leases(1,947)(1,562)2,792 
Net cash provided by operating activities132,298 100,052 112,893 
Cash flows from investing activities
Purchases of property and equipment(19,761)(19,880)(19,588)
Purchases of investments(133,994)(160,427)(121,242)
Maturities of investments131,331 158,937 111,193 
Acquisition of business, net(70,218)(91,420)(17,066)
Net cash used in investing activities(92,642)(112,790)(46,703)
Cash flows from financing activities
Repurchases of common stock (43,215)(20,430)
Net proceeds from exercise of options to purchase common stock9,856 4,908 9,374 
Net proceeds from employee stock purchase plan activity8,114 6,676 4,737 
Payments for contingent consideration(2,000) (2,042)
Net cash provided by (used in) financing activities15,970 (31,631)(8,361)
Effect of foreign currency exchange rate changes562 (290)31 
Net increase (decrease) in cash and cash equivalents56,188 (44,659)57,860 
Cash and cash equivalents at beginning of period162,893 207,552 149,692 
Cash and cash equivalents at end of period$219,081 $162,893 $207,552 
Supplemental disclosure of cash flow information   
Cash paid for income taxes$29,207 $16,076 $9,979 
Non-cash financing activity:
Contingent consideration related to acquisition$ $2,000 $ 
See accompanying notes to these consolidated financial statements.
Picture1.jpg SPS COMMERCE, INC.
42
Form 10-K for the Annual Period ended December 31, 2023

SPS COMMERCE, INC. AND SUBSIDIARIES
NOTES TO CONSOLIDATED FINANCIAL STATEMENTS
NOTE A – General
Business Description
SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.
Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.
Basis of Presentation
The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements.
Foreign Currency Translation
The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies are included in other income (expense), net in our consolidated statements of comprehensive income.
Use of Estimates
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.
Business Combinations
We allocate the fair value of purchase consideration to the tangible assets acquired, liabilities assumed, and intangible assets acquired based on their estimated fair values as of the acquisition date. The excess of the fair value of purchase consideration over the fair values of these identifiable assets and liabilities is recorded as goodwill.
Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We record the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred, if present. The unsettled earn-out liability, if any, is subsequently remeasured at each reporting date at fair value through earnings.
While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed. Any such adjustments would be recorded as an offset to goodwill or a working capital purchase price adjustment as applicable. Upon the conclusion of the measurement period or final determination of the fair values, whichever comes first, any subsequent adjustments would be recorded in our consolidated statements of comprehensive income.
Picture1.jpg SPS COMMERCE, INC.
43
Form 10-K for the Annual Period ended December 31, 2023

Segment Information
Our Chief Executive Officer acts as the Company’s chief operating decision maker and reviews financial information presented on a consolidated basis for purposes of allocating resources and evaluating financial performance. There are no segment managers who are held accountable by the chief operating decision maker, or anyone else, for operations, operating results and planning for levels or components below the consolidated unit level. Accordingly, we determined we have one operating and reportable segment, which is supply chain management products.
Concentration of Credit Risk
Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits, accounts receivable, and investments. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. Concentrations of credit risk with respect to accounts receivable are subject to the financial condition of our customers, which are routinely assessed for potential credit losses. We believe that the receivable credit risk exposure is limited. Our investment policy limits the amount of credit exposure with any one financial institution or commercial issuer and sets requirements regarding credit rating and investment maturities to safeguard liquidity and minimize risk.
Cash and Cash Equivalents
Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days.
Investments
We invest in money market funds, certificates of deposit, and/or marketable securities such as commercial paper, highly liquid debt instruments of the U.S. government, and U.S. corporate debt securities. Investments with remaining maturities of less than one year from the balance sheet date are classified as short-term investments whereas those with remaining maturities of more than one year from the balance sheet date are classified as investments, non-current.
Securities classified as available for sale are carried at fair value and the unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive gain (loss) in the consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the consolidated statements of comprehensive income. Certain securities accrue interest that is included in other income (expense), net. If a determination has been made that the fair value of a marketable security is below its amortized cost basis, the portion of the unrealized loss that corresponds to a credit-related factor is realized through a credit allowance on the marketable security and the equivalent expense is realized in other income (expense), net in the consolidated statements of comprehensive income.
Fair Value Measurements
The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature.
Recurring Fair Value Measurements
We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that are used to measure fair value are:
Level 1 – quoted prices in active markets for identical assets or liabilities.
Level 2 – observable inputs other than Level 1 prices, such as (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities.
Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities.
Picture1.jpg SPS COMMERCE, INC.
44
Form 10-K for the Annual Period ended December 31, 2023

Nonrecurring Fair Value Measurements
We measure certain assets and liabilities at fair value on a nonrecurring basis, including long-lived assets, goodwill, and indefinite-lived intangible assets.
Accounts Receivable
Accounts receivable are initially recorded upon the sale and invoicing of products to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for credit losses, which represent estimated losses resulting from customers not making required payments on accounts receivables. When determining the allowance, we pool our outstanding accounts receivable invoices based on the contractual due date of payment. We take several factors into consideration for estimated credit losses by pool, primarily our historical credit losses, with additional adjustments made for current and future macro-economic conditions and retail bankruptcy trends. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowance are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income.
Property and Equipment
Property and equipment, including assets acquired under lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization expense is calculated using the straight-line method over the estimated useful lives, commencing on the earlier date in which the asset is placed in service or ready for its intended use.
The estimated useful lives of property and equipment were as follows:
Estimated Useful Life
Internally developed software3 years
Computer equipment
3 years
Office equipment and furniture
5-7 years
Leasehold improvementsShorter of the useful life of the asset or the remaining term of the lease
Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred. The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals with the resulting gain or loss included in our consolidated statements of comprehensive income.
We capitalize and amortize eligible costs to acquire or generate internally developed software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Additionally, maintenance of internally developed software are expensed as incurred. The assets and related accumulated amortization are adjusted for abandoned internally developed software with the resulting loss included in our consolidated statements of comprehensive income.
Leases
We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and non-current operating lease liabilities in our consolidated balance sheets.
Right-of-use (“ROU”) assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We use the implicit interest rate when readily determinable. We estimate the discount rate for a similar collateralized asset by estimating costs of borrowing. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change.
Picture1.jpg SPS COMMERCE, INC.
45
Form 10-K for the Annual Period ended December 31, 2023

Research and Development
Research and development costs primarily include development, maintenance, and data conversion activities related to our cloud-based supply chain management products and are expensed as incurred. Research and development costs are net of amounts capitalized as developed software.
Goodwill
Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. Goodwill is attributed to a trained workforce and other buyer-specific value resulting from expected synergies, including long-term cost savings, which are not included in the fair values of identifiable assets.
We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount exceeds the fair value of the reporting unit, we would recognize an impairment loss in the consolidated statements of comprehensive income, to the extent that the carrying amount exceeds fair value.
Intangible Assets
Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships and developed technology. We recognize the fair value of the identifiable intangible assets acquired separately from goodwill. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable.
The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives.
The estimated useful lives for intangible were as follows:
Estimated Useful Life
Subscriber relationships
7-10 years
Developed technology
5-10 years
Impairment of Long-Lived Assets
We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured and recorded as an expense in the consolidated statements of comprehensive income as the amount by which the carrying amount of a long-lived asset exceeds its fair value.
Revenue Recognition
Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.
We determine revenue recognition through the following steps:
Identification of the contract, or contracts, with a customer
Identification of the performance obligations in the contract
Determination of the transaction price
Allocation of the transaction price to the performance obligations in the contract
Recognition of revenue when, or as, we satisfy a performance obligation
See Note C for further descriptions of our revenue recognition policy.
Picture1.jpg SPS COMMERCE, INC.
46
Form 10-K for the Annual Period ended December 31, 2023

Deferred Costs
Deferred costs are those that are incurred to fulfill or obtain customer contracts and that are considered incremental and recoverable costs. These consist primarily of customer implementation costs and certain commissions paid to sales personnel and referral partners, respectively. These costs are deferred and amortized over the expected period of benefit which we have determined primarily to be two years.
Customer implementation costs are based on actual costs incurred. Related amortization expense is included in cost of revenues in the consolidated statements of comprehensive income.
Sales commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. Related amortization expense is included in sales and marketing expenses in the consolidated statements of comprehensive income.
Stock-Based Compensation
Stock-based compensation includes grants of incentive and nonqualified stock options, performance share units (“PSUs”), restricted stock awards (“RSAs”), restricted stock units (“RSUs”), deferred stock units (“DSUs”), employee stock purchase plan (“ESPP”) activity, and 401(k) stock match and is used to compensate employees, executive officers, and non-employee directors.
We recognize the cost of all stock-based payments based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. For all awards, we recognize forfeitures as they occur.
RSAs result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested, or released according to the terms of the agreement.
Our ESPP allows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of our common stock at the beginning or end of each stock purchase period. The plan is a Type B plan, so the number of shares a participants can acquire is variable. Participants purchase more shares as the stock price decreases, up to the total amount originally elected to withhold at the beginning of the offering period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year.
The fair value of stock options and ESPP activity is estimated using the Black-Scholes option valuation model. The fair value for RSAs, RSUs, and DSUs is the closing market value of the underlying stock on the date of grant less the purchase price (if any). The fair value of PSUs is estimated using a Monte Carlo simulation.
Judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is derived from historical data on option holder exercises and post-vesting employment termination behavior.
Additional valuation inputs include our expected non-issuance of future common stock dividends and the risk-free interest rate that is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equaling the expected life at the grant date. For PSUs, the Monte Carlo simulation utilizes multiple input variables that determine the probability of satisfying the performance conditions stipulated in the award.
Income Taxes
We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the consolidated financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgment, it is more likely than not that some or all of the deferred tax asset will not be realized. Deferred tax positions are net by jurisdiction on the consolidated balance sheet.
Picture1.jpg SPS COMMERCE, INC.
47
Form 10-K for the Annual Period ended December 31, 2023

We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results.
We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority.
It is our practice to recognize interest and penalties accrued on any unrecognized tax benefits as a component of income tax expense.
Net Income Per Share
Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share.
Accounting Pronouncements Recently Adopted
StandardDate of IssuanceDescription
Date of Adoption
Effect on the Financial Statements
ASU 2021-08, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers
October 2021This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.
January 2023The adoption of this standard has not had a material impact on the purchase accounting for business combinations.
Accounting Pronouncements Not Yet Adopted
StandardDate of IssuanceDescriptionDate of Required AdoptionEffect on the Financial Statements
ASU 2023-09, Income Taxes (Topic 740) - Improvements to Income Tax Disclosures
December 2023This amendment requires that an entity disclose specific categories in the effective tax rate reconciliation table as well as provide disclosure of disaggregated information related to income tax expense, income before income taxes, and income taxes paid. January 2024We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.
ASU 2023-07, Segment Reporting (Topic 280) - Improvements to Reportable Segment Disclosures
November 2023This amendment requires that an entity disclose significant segment expenses impacting profit and loss that are regularly provided to the chief operating decision maker.January 2024We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.


Picture1.jpg SPS COMMERCE, INC.
48
Form 10-K for the Annual Period ended December 31, 2023

NOTE B – Business Acquisitions
TIE Kinetix
Effective September 13, 2023, we acquired all of the outstanding equity ownership interests of TIE Kinetix Holding B.V. ("TIE Kinetix"), a leading provider of supply chain digitalization including EDI and e-invoicing in Europe and the United States. Pursuant to the definitive agreement, the purchase price was €63.9 million ($68.7 million at the September 13, 2023 exchange rate), net of cash acquired. The purchase accounting for the acquisition has not been finalized as of December 31, 2023; provisional amounts are primarily related to intangible assets and tax components. We expect to finalize the allocation of the purchase price within the one-year measurement period following the acquisition. The goodwill associated with the acquisition is not deductible for income tax purposes.
Purchase Price Allocation
We accounted for the acquisition as a business combination. We allocated the purchase price to the tangible and identifiable intangible assets acquired and liabilities assumed based on their estimated fair values as of the acquisition date.
The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date:
(in thousands)Acquisition Date Estimated Fair Value as of
September 30, 2023
AdjustmentAcquisition Date Estimated Fair Value as of
December 31, 2023
Cash paid$73,558 $— $73,558 
Estimated fair value of assets and liabilities acquired:
Cash$4,859 $— $4,859 
Accounts receivable1,347 (80)1,267 
Other assets2,981 659 3,640 
Intangible assets
Subscriber relationships18,183 11,137 29,320 
Developed technology12,122 (4,279)7,843 
Current liabilities(3,606)(232)(3,838)
Deferred revenue(6,421)— (6,421)
Deferred income tax liabilities, net(6,112)(1,757)(7,869)
Total fair value of assets and liabilities acquired$23,353 $5,448 $28,801 
Goodwill$50,205 $(5,448)$44,757 
The following table summarizes the estimated useful lives for each acquired intangible asset, each of which are subject to finalization:
Estimated Useful Life
Subscriber relationships8.0 years
Developed technology6.0 years

Picture1.jpg SPS COMMERCE, INC.
49
Form 10-K for the Annual Period ended December 31, 2023

Other Acquisition Activity
In the year ended December 31, 2023, we had other acquisition activity resulting in a total purchase price of $1.5 million, paid in cash. Assets acquired were primarily comprised of developed technology and customer relationships, totaling $0.9 million of estimated fair value. The remainder of the consideration transferred, $0.6 million, was allocated to goodwill.
Effective October 4, 2022, we acquired all of the outstanding equity ownership interests of Canadian based InterTrade Systems Inc. ("InterTrade"), a leading EDI provider within the apparel and general merchandising markets. Pursuant to the definitive agreement, the purchase price was $49.1 million, including estimated post-closing adjustments. In the year ended December 31, 2023, provisional amounts were adjusted by $3.1 million, primarily relating to a $3.9 million decrease in estimated value of intangible assets and the corresponding $1.0 million change to the deferred tax position, with the offsets to goodwill. The purchase accounting was finalized in the year ended December 31, 2023.
Effective July 19, 2022, we acquired all of the outstanding equity ownership interests of GCommerce, Inc. ("GCommerce"), a leading EDI provider within the automotive aftermarket industry. Pursuant to the definitive agreement, the purchase price was $45.1 million, including post-closing adjustments. In the year ended December 31, 2023, provisional amounts were adjusted by $1.6 million, primarily relating to a $1.5 million decrease in the estimated value of deferred income tax assets, with the corresponding offset to goodwill. The purchase accounting was finalized in the year ended December 31, 2023.
NOTE C – Revenue
We derive our revenues from the following revenue streams:
Year Ended December 31,
(in thousands)202320222021
Recurring revenues:
Fulfillment$436,702 $364,148 $306,851 
Analytics51,703 46,894 42,674 
Other13,608 8,005 5,481 
Recurring Revenues502,013 419,047 355,006 
One-time revenues34,897 31,828 30,270 
Total revenue$536,910 $450,875 $385,276 
Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.
Recurring Revenues
Recurring revenues consist of recurring subscriptions from customers that utilize our Fulfillment, Analytics, and Other supply chain management products. Revenue for these products is generally recognized on a ratable basis over the contract term beginning on the date that our service is made available to the customer. Our contracts with our recurring revenue customers are recurring in nature, generally ranging from monthly to annual, and generally allow the customer to cancel the contract for any reason with 30 to 90 days’ notice. Timing of billings varies by customer and by contract type and are either in advance or within 30 days of the service being performed.
Given that the recurring revenue contracts are for one year or less, we have applied the optional exemption to not disclose information about the remaining performance obligations for recurring revenue contracts.
One-time Revenues
One-time revenues consist of set-up fees and miscellaneous fees from customers.
Set- up revenues
Set-up fees are specific for each connection a customer has with a trading partner. These nonrefundable fees are necessary for our customers to utilize our services and do not provide any standalone value. Many of our customers have connections with numerous trading partners.
Picture1.jpg SPS COMMERCE, INC.
50
Form 10-K for the Annual Period ended December 31, 2023

Set-up fees constitute a material renewal option right that provide customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. As such, set-up fees and related costs are deferred and recognized ratably, generally over two years, which is the estimated period for which a material right is present for our customers.
The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees:
Year Ended December 31,
(in thousands)20232022
Balance, beginning of year$14,999 $14,459 
Invoiced set-up fees19,146 15,457 
Recognized set-up fees(16,542)(14,917)
Balance, end of year$17,603 $14,999 
The entire balance of deferred set-up fees will be recognized within two years. Those that will be recognized within the next year are classified as current, whereas the remainder are classified as non-current.
Miscellaneous fees
Miscellaneous fees primarily consist of professional services and testing and certification.
The contract period for these one-time fees is for one year or less and recognized at the time service is provided. We have applied the optional exemption to not disclose information about the remaining performance obligations for miscellaneous one-time fee contracts since they have original durations of one year or less.
Deferred Revenue
In the year ended December 31, 2023, we recognized revenue of $57.4 million from amounts included in deferred revenue at December 31, 2022.
NOTE D – Deferred Costs
The deferred costs activity was as follows:
Year Ended December 31,
(in thousands)20232022
Balance, beginning of year$70,179 $59,720 
Incurred deferred costs89,012 72,509 
Amortized deferred costs(76,441)(62,050)
Balance, end of year$82,750 $70,179 
Picture1.jpg SPS COMMERCE, INC.
51
Form 10-K for the Annual Period ended December 31, 2023

NOTE E – Fair Value Measurements
Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:
December 31,
20232022
Fair Value LevelAmortized CostUnrealized Gains (Losses), netFair ValueAmortized CostUnrealized Gains (Losses), netFair Value
(in thousands)
Cash equivalents:
Money market fundsLevel 1$161,233 $ $161,233 $73,368 $ $73,368 
Investments:
Certificates of depositLevel 16,805  6,805 6,813  6,813 
Marketable securities:
Commercial paperLevel 248,860 694 49,554 44,224 375 44,599 
$216,898 $694 $217,592 $124,405 $375 $124,780 
NOTE F – Allowance for Credit Losses
The allowance for credit losses activity, included in accounts receivable, net, was as follows:
Year Ended December 31,
(in thousands)202320222021
Balance, beginning of year$3,066 $4,249 $4,233 
Provision for credit losses5,707 3,359 4,717 
Write-offs, net of recoveries(5,453)(4,542)(4,790)
Initial allowance for business combination acquired receivables  89 
Balance, end of year$3,320 $3,066 $4,249 
NOTE G – Property and Equipment, Net
Property and equipment, net consisted of the following:
December 31,
(in thousands)20232022
Internally developed software$60,396 $49,994 
Computer equipment34,402 30,310 
Leasehold improvements15,387 16,531 
Office equipment and furniture10,966 10,981 
Property and equipment, cost121,151 107,816 
Less: accumulated depreciation and amortization(85,108)(72,358)
Total property and equipment, net$36,043 $35,458 
Depreciation and amortization expense of property and equipment was as follows:
Year Ended December 31,
(in thousands)202320222021
Depreciation and amortization expense$18,631 $16,421 $14,788 
Picture1.jpg SPS COMMERCE, INC.
52
Form 10-K for the Annual Period ended December 31, 2023

NOTE H – Goodwill and Intangible Assets, Net
Goodwill
The activity in goodwill was as follows:
Year Ended December 31,
(in thousands)2023
Balance, beginning of year$197,284 
Additions from business acquisitions45,393 
Foreign currency translation2,328 
Remeasurement from provisional purchase accounting amount4,171 
Balance, end of year$249,176 
Intangible Assets
Intangible assets, net consisted of the following:
December 31, 2023
($ in thousands)Gross
Carrying
Amount
Accumulated
Amortization
Foreign
Currency
Translation
NetWeighted Average Remaining Amortization Period
Subscriber relationships$105,228 $(32,097)$724 $73,855 6.6 years
Developed technology48,843 (15,669)315 33,489 5.0 years
$154,071 $(47,766)$1,039 $107,344 6.1 years
December 31, 2022
($ in thousands)Gross
Carrying
Amount
Accumulated
Amortization
Foreign
Currency
Translation
NetWeighted Average Remaining Amortization Period
Subscriber relationships$80,101 $(22,255)$(171)$57,675 6.8 years
Developed technology40,610 (9,934)1 30,677 5.4 years
$120,711 $(32,189)$(170)$88,352 6.4 years

Amortization expense of intangible assets was as follows:
Year Ended December 31,
(in thousands)202320222021
Amortization expense
$16,116 $11,768 $10,126 

The estimated future annual amortization expense related to intangible assets is as follows:
(in thousands)
2024$18,842 
202518,704 
202617,700 
202717,226 
202815,959 
Thereafter18,913 
Total future amortization$107,344 
Picture1.jpg SPS COMMERCE, INC.
53
Form 10-K for the Annual Period ended December 31, 2023

NOTE I – Commitments and Contingencies
Leases
We are engaged in a lease agreement for our current headquarters located in Minneapolis, Minnesota where we lease approximately 198,000 square feet under an agreement that expires in 2027. The lease also has two options to extend the term for five years each at a market rate determined in accordance with the lease. We lease other smaller facilities across the U.S. and international locations.
The components of lease expense were as follows:
Year Ended December 31,
(in thousands)202320222021
Operating lease cost$3,123 $3,087 $3,089 
Variable lease cost3,771 3,576 3,660 
$6,894 $6,663 $6,749 
Supplemental cash flow information related to leases was as follows:
December 31,
(in thousands)20232022
Cash paid for amounts included in the measurement of lease liabilities
Operating cash flows from operating leases$5,022 $4,639 
Right-of-use assets obtained in exchange for operating lease liabilities1,147 934 
Supplemental balance sheet information related to operating leases was as follows:
December 31, 2023December 31, 2022
Weighted-average remaining lease term3.1 years3.9 years
Weighted-average discount rate4.0 %4.0 %
At December 31, 2023, our future minimum payments under operating leases were as follows:
(in thousands)
2024$4,910 
20254,694 
20263,947 
20271,299 
202825 
Thereafter76 
Total future gross payments14,951 
Less: imputed interest(922)
Total operating lease liabilities$14,029 
Purchase Commitments
We have entered into separate noncancelable agreements with computing infrastructure, productivity software, customer relationship management, and performance and security data analytics vendors for services through 2026. At December 31, 2023, our remaining purchase commitments and estimated purchase timing were as follows:
(in thousands)
2024$14,536 
202514,186 
20266,342 
Total remaining purchase commitments$35,064 
Picture1.jpg SPS COMMERCE, INC.
54
Form 10-K for the Annual Period ended December 31, 2023

Contingencies
We may be involved in various claims and legal actions in the normal course of business. We believe that the outcome of any such claim or legal action is not expected to have a material adverse effect on our financial position or results of operations.
NOTE J – Stockholders’ Equity
Share Repurchase Program
Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through December 31, 2023 were as follows:
(in thousands)Effective DateExpiration DateShare Value Authorized for RepurchaseShare Value RepurchasedUnused & Expired Share Repurchase ValueShare Value Available for Future Repurchase
2019 ProgramNovember 2019November 2021$50,000 $29,611 $20,389 N/A
2021 ProgramNovember 2021August 202250,000 49,992 8 N/A
2022 ProgramAugust 2022July 202450,000 2,992 N/A$47,008 
The share repurchase activity by period was as follows:
Year Ended December 31,
(in thousands, except shares and per share amounts)202320222021
Number of shares repurchased 361,745 176,103 
Shares repurchased cost$ $43,215 $20,430 
Average price per repurchased share$ $119.46 $116.01 
NOTE K – Stock-Based Compensation
Our equity compensation plans provide for the grant of incentive and nonqualified stock options, as well as other stock-based awards including PSUs, RSAs, RSUs, and DSUs, to employees, non-employee directors and other consultants who provide services to us. We also provide an ESPP and 401(k) stock match to eligible participants.
We recognize stock-based compensation expense based on grant date award fair value. This cost is recognized over the period for which the employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. At December 31, 2023 there were 12.7 million shares available for grant under approved equity compensation plans.
Stock-based compensation expense was allocated in the consolidated statements of comprehensive income as follows:
Year Ended December 31,
(in thousands)202320222021
Cost of revenues$10,169 $8,684 $6,760 
Operating expenses
Sales and marketing9,774 7,590 6,248 
Research and development7,200 5,634 4,384 
General and administrative18,365 11,491 10,182 
$45,508 $33,399 $27,574 
Picture1.jpg SPS COMMERCE, INC.
55
Form 10-K for the Annual Period ended December 31, 2023

Stock-based compensation expense by grant type or plan was as follows:
Year Ended December 31,
(in thousands)202320222021
Stock options$1,947 $1,903 $2,057 
PSUs11,886 7,509 6,417 
RSUs & DSUs
26,185 19,282 15,388 
RSAs
472 437 434 
ESPP2,488 2,144 1,391 
401(k) stock match2,530 2,124 1,887 
$45,508 $33,399 $27,574 
As of December 31, 2023, there was $52.0 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a primarily straight-line basis over a weighted-average period of 2.4 years.
Stock Options
Options generally vest over four years and, upon vesting, the holder is given the option to purchase shares of common stock at a specific strike price until expiration, which is generally seven years from the grant date.
Our stock option activity was as follows:
Options (#)Weighted Average
Exercise Price
($/share)
Outstanding at December 31, 2020944,88636.71 
Granted53,223105.53 
Exercised(311,378)30.10 
Forfeited(8,081)68.62 
Outstanding at December 31, 2021678,65044.76 
Granted56,430122.59 
Exercised(164,393)29.86 
Forfeited(7,990)92.48 
Outstanding at December 31, 2022562,69756.24 
Granted42,215152.68 
Exercised(254,353)38.75 
Forfeited(3,737)129.43 
Outstanding at December 31, 2023346,82280.02 
Of the total outstanding options at December 31, 2023, 0.3 million were exercisable. The outstanding and exercisable options had a weighted average exercise price of $67.07 per share and a weighted average remaining contractual life of 3.1 years.
The table below presents additional information related to our stock options:
Year Ended December 31,
(in thousands, except per share data)202320222021
Fair value of options vested$1,966 $1,996 $2,509 
Intrinsic value of options exercised31,227 16,705 27,713 
Intrinsic value of options outstanding39,474 40,692 66,235 
Weighted-average fair value per share of options granted56.47 41.34 31.31 
Picture1.jpg SPS COMMERCE, INC.
56
Form 10-K for the Annual Period ended December 31, 2023

The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:
Year Ended December 31,
202320222021
Life (in years)4.24.34.4
Volatility39 %38 %35 %
Dividend yield   
Risk-free interest rate4.00 %2.50 %0.59 %
Performance Share Units, Restricted Stock Units and Awards, and Deferred Stock Units
In 2023, 2022, and 2021 we granted PSU awards with certain target performance levels. These awards are earned based upon our Company’s total shareholder return as compared to an indexed total shareholder return over the course of a fiscal based three-year performance period, starting in the year of grant. Earned awards vest in the quarter following the conclusion of the performance period. Expense is recognized on a straight-line basis over the performance period, regardless of whether the market condition is satisfied as the likelihood of the market condition being met is included in the fair-value measurement of the award. In 2023, PSU awards granted in 2020 were earned and vested at the maximum performance level and less than 0.2 million shares of common stock were issued.
RSUs generally vest over four years and, upon vesting, the holder is entitled to receive shares of our common stock.
RSAs vest over one year and, upon vesting, the holder is entitled to receive shares of our common stock. In lieu of RSAs, a participant may elect to receive DSUs with one year vesting, but the participant directs delayed receipt of common shares of up to ten years after the end of service to us.
Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:
#Weighted Average Grant
Date Fair Value
($/share)
Outstanding at December 31, 2020738,42252.37 
Granted314,290101.85 
Vested and common stock issued(331,669)44.14 
Forfeited(18,883)66.35 
Outstanding at December 31, 2021702,16078.03 
Granted312,880126.44 
Vested and common stock issued(276,872)64.12 
Forfeited(26,010)99.37 
Outstanding at December 31, 2022712,158103.93 
Granted416,377163.55 
Vested and common stock issued(344,087)77.52 
Forfeited(11,034)122.97 
Outstanding at December 31, 2023773,414147.50 
The number of PSUs, RSUs, RSAs, and DSUs outstanding at December 31, 2023 included less than 0.1 million units that have vested, but the shares of common stock have not yet been issued, pursuant to the terms of the agreements.
Picture1.jpg SPS COMMERCE, INC.
57
Form 10-K for the Annual Period ended December 31, 2023

Employee Stock Purchase Plan
Our ESPP activity was as follows:
Year Ended December 31,
(in thousands, except share data)202320222021
Amounts for shares purchased$8,114 $6,676 $4,737 
Shares purchased63,641 70,107 55,726 
A total of 1.7 million shares of common stock are remaining for issuance under the plan at December 31, 2023.
The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:
Year Ended December 31,
202320222021
Life (in years)0.50.50.5
Volatility36 %42 %32 %
Dividend yield
Risk-free interest rate4.92 %1.27 %0.07 %
Note L – Income Taxes
Our provision for income taxes was comprised of the following components:
Year Ended December 31,
(in thousands)202320222021
Current
Federal$20,168 $13,881 $1,559 
State4,221 4,149 1,890 
Foreign2,103 1,990 1,610 
Deferred
Federal(5,425)(2,530)4,294 
State(390)(751)(88)
Foreign(938)(549)(321)
$19,739 $16,190 $8,944 
Our income tax expense differed from the amounts computed by applying the U.S. federal income tax rate to pretax income as a result of the following:
Year Ended December 31,
202320222021
U.S. statutory federal income tax rate21.0 %21.0 %21.0 %
Increase (decrease) resulting from:
U.S. state income taxes, net of federal tax effect5.1 4.6 4.5 
Tax impact of stock activity(5.6)(4.7)(12.8)
Nondeductible compensation4.7 3.5 5.0 
Research and development credit(1.5)(1.5)(1.1)
Foreign derived intangible income(1.3)(1.4)(1.3)
Other0.7 1.2 1.4 
Effective tax rate23.1 %22.7 %16.7 %
Picture1.jpg SPS COMMERCE, INC.
58
Form 10-K for the Annual Period ended December 31, 2023

The significant components of our deferred income tax assets and liabilities were as follows:
December 31,
(in thousands)20232022
Deferred income tax assets
Net operating loss and credit carryforwards$10,212 $9,970 
Stock-based compensation expense6,304 5,084 
Accrued expenses6,067 4,469 
Operating lease liabilities3,470 4,384 
Research and development capitalized17,007 9,591 
Other deferred income tax assets2,705 2,408 
Gross deferred income tax assets45,765 35,906 
Less: valuation allowance(2,545)(1,873)
Total net deferred income tax assets$43,220 $34,033 
Deferred income tax liabilities
Deferred costs$(20,672)$(17,696)
Right-of-use assets(1,884)(2,338)
Depreciation and amortization(28,066)(20,282)
Other deferred income tax liabilities(1,065)(909)
Total deferred income tax liabilities(51,687)(41,225)
Net deferred income tax liabilities$(8,467)$(7,192)
As of December 31, 2023, we had net operating loss carryforwards of $28.9 million for U.S. federal tax purposes, $5.6 million for state tax purposes, and $9.8 million for foreign tax purposes. If not utilized, the loss carryforwards will expire between 2024 and 2036 for federal tax purposes, between 2024 and 2043 for state tax purposes, and will not expire for foreign tax purposes. Section 382 of the U.S. Internal Revenue Code generally imposes an annual limitation on the amount of net operating loss carryforwards that might be used to offset taxable income when a corporation has undergone significant changes in stock ownership. As of December 31, 2023, all $28.9 million of our federal net operating loss carryforwards are subject to Section 382 limitations, of which we believe $6.5 million will expire unused due to Section 382 limitations. Accordingly, our deferred income tax assets are reported net of the Section 382 limitations.
We are subject to income taxes for U.S. federal and various state and international jurisdictions. We are generally subject to U.S. federal and state tax examinations for most prior tax years due to our net operating loss and R&D credit carryforwards and the utilization of the carryforwards in years still open under statute.
NOTE M – Other Income and Expense
Other income (expense), net included the following:
Year Ended December 31,
(in thousands)202320222021
Investment income$7,660 $1,670 $278 
Realized gain (loss) from foreign currency on cash and investments held1,726 (1,026)(1,456)
Other expense, net(1,071)(502)(366)
Total other income (expense), net$8,315 $142 $(1,544)
Picture1.jpg SPS COMMERCE, INC.
59
Form 10-K for the Annual Period ended December 31, 2023

NOTE N – Net Income Per Share
The components and computation of basic and diluted net income per share were as follows:
Year Ended December 31,
(in thousands, except per share amounts)202320222021
Numerator
Net income$65,824 $55,134 $44,597 
Denominator
Weighted average common shares outstanding, basic36,646 36,117 35,928 
Options to purchase common stock and ESPP265 382 529 
PSUs, RSUs, RSAs, and DSUs564 454 505 
Weighted average common shares outstanding, diluted37,475 36,953 36,962 
Net income per share
Basic$1.80 $1.53 $1.24 
Diluted$1.76 $1.49 $1.21 
The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:
Year Ended December 31,
(in thousands)202320222021
Anti-dilutive shares36 75 31 
NOTE O – Retirement Contributions
We sponsor a 401(k) retirement savings plan for our U.S. employees. Eligible employees can contribute up to 80% of their compensation, subject to the limits established by law, and we match 50% of the employee’s contribution up to the first 6% of pre-tax annual compensation. A portion of our match is in Company stock, which is purchased from the open market by our plan provider and immediately deposited into the employee’s 401(k) account. Additionally, we make statutory contributions to retirement plans as required by local foreign government regulations.
Our total contributions were as follows:
Year Ended December 31,
(in thousands)202320222021
Retirement contributions$6,627 $5,386 $4,790 
NOTE P – Geographic Information
Statements of Comprehensive Income
The percentage of domestic revenue, which we define as consolidated revenue that was attributable to customers based within the U.S., and domestic income before income taxes, which we define as the percentage of consolidated income before income taxes that was attributable to our subsidiaries based in the U.S., were as follows:
Year Ended December 31,
202320222021
Domestic revenue84 %84 %84 %
Domestic income before income taxes94 %91 %89 %
No single jurisdiction outside of the U.S. had revenues in excess of 10%.
Picture1.jpg SPS COMMERCE, INC.
60
Form 10-K for the Annual Period ended December 31, 2023

Property and Equipment
Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows:
December 31,
20232022
International property and equipment15 %13 %
NOTE Q– Related Party Transactions
The SPS Commerce Foundation (the “Foundation”) is a Minnesota non-profit organization exempt from federal taxation under Section 501(c)(3) of the Internal Revenue Code. The Foundation was formed in 2015 to engage in, advance, support, promote and administer charitable activities. The directors of the Foundation are also our executive officers. These directors receive no compensation from the Foundation or us for the management services performed for the Foundation. The Foundation is not a subsidiary of ours and the financial results of the Foundation are not consolidated with our financial statements. We have no current legal obligations for future commitments to the Foundation. Our contributions to the Foundation were as follows:
Year Ended December 31,
(in thousands)202320222021
Foundation contributions$2,300 $2,750 $2,400 
Item 9.    Changes in and Disagreements with Accountants on Accounting and Financial Disclosure
None.
Item 9A.    Controls and Procedures
Assessment of Disclosure Controls and Procedures
We assessed the effectiveness of the design and operation of our disclosure controls and procedures as of December 31, 2023, the end of the period covered by this Annual Report on Form 10-K. This assessment was done under the supervision and with the participation of management, including our Chief Executive Officer and Chief Financial Officer. Disclosure controls and procedures means controls and other procedures that are designed to provide reasonable assurance that information required to be disclosed in the reports that we file or submit under the Exchange Act, such as this Annual Report on Form 10-K, is recorded, processed, summarized and reported within the time periods specified in the rules and forms of the SEC. Disclosure controls and procedures include, without limitation, controls and procedures designed such that information is accumulated and communicated to our management, including our Chief Executive Officer and Chief Financial Officer, as appropriate to allow timely decisions regarding required disclosure. Based on this assessment, our Chief Executive Officer and Chief Financial Officer have concluded that as of December 31, 2023, our disclosure controls and procedures were effective.
Management’s Annual Report on Internal Control Over Financial Reporting
Our management is responsible for establishing and maintaining adequate internal control over financial reporting. Internal control over financial reporting is defined in Rules 13a-15(f) and 15d-15(f) under the Exchange Act as a process designed by, or under the supervision of, our principal executive and principal financial officer and effected by our board of directors, management and other personnel, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of consolidated financial statements for external purposes in accordance with GAAP and includes those policies and procedures that:
pertain to the maintenance of records that in reasonable detail accurately and fairly reflect the transactions and dispositions of our assets;
provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with GAAP, and that our receipts and expenditures are being made only in accordance with authorizations of our management and directors; and
provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use or disposition of our assets that could have a material effect on our consolidated financial statements.
Picture1.jpg SPS COMMERCE, INC.
61
Form 10-K for the Annual Period ended December 31, 2023

Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.
Under the supervision and with the participation of management, including our principal executive and financial officers, we assessed our internal control over financial reporting as of December 31, 2023, based on criteria for effective internal control over financial reporting established in the Internal Control — Integrated Framework (2013) issued by the Committee of Sponsoring Organizations of the Treadway Commission.
Based on this assessment, management concluded that we maintained effective internal control over financial reporting as of December 31, 2023 based on the specified criteria.
Pursuant to the SEC’s general guidance that the assessment of a recently acquired business' internal control over financial reporting may be omitted in the year of acquisition, as of December 31, 2023, our scope of the assessment of our internal control over financial reporting excluded TIE Kinetix, which was acquired in September 2023. Our assessment of the effectiveness of internal control over financial reporting as of December 31, 2024 will include TIE Kinetix.
Excluding net intangible assets and goodwill, TIE Kinetix represented less than 5% of our consolidated assets as of December 31, 2023 and less than 5% of our consolidated revenues for the year ended December 31, 2023. 
The effectiveness of our internal control over financial reporting as of December 31, 2023 has been audited by KPMG LLP, our independent registered public accounting firm, as stated in their report, which is included under Item 8 of this Annual Report on Form 10-K.
Changes in Internal Control over Financial Reporting
There were no changes in our internal control over financial reporting during the three months ended December 31, 2023 that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.
Item 9B.    Other Information
Insider Adoption or Termination of Trading Arrangements
During the three months ended December 31, 2023, none of our directors or officers (as defined in Rule 16a-1(f) of the Exchange Act) adopted, modified, or terminated any contract, instruction, or written plan for the purchase or sale of our securities that was intended to satisfy the affirmative defense conditions of Rule 10b5-1(c) of the Exchange Act or any non-Rule 10b5-1 trading arrangement (as defined in Item 408(c) of Regulation S-K).
Item 9C.    Disclosure Regarding Foreign Jurisdictions that Prevent Inspections
Not Applicable.
Picture1.jpg SPS COMMERCE, INC.
62
Form 10-K for the Annual Period ended December 31, 2023

PART III
Item 10.    Directors, Executive Officers and Corporate Governance
The information required by this item will be included in the 2024 Proxy Statement under the captions “Election of Directors,” “Executive Compensation,” and “Information Regarding the Board of Directors and Corporate Governance” and is incorporated herein by reference.
Item 11.    Executive Compensation
The information required by this item will be included in the 2024 Proxy Statement under the captions “Executive Compensation,” and "Security Ownership" and is incorporated herein by reference.
Item 12.    Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters
The information required by this item will be included in the 2024 Proxy Statement under the caption “Security Ownership” and is incorporated herein by reference.
Item 13.    Certain Relationships and Related Transactions, and Director Independence
The information required by this item will be included in the 2024 Proxy Statement under the captions “Certain Relationships and Related Transactions,” “Information Regarding the Board of Directors and Corporate Governance,” and "Election of Directors" and is incorporated herein by the reference.
Item 14.    Principal Accounting Fees and Services
The information required by this item will be included in the 2024 Proxy Statement under the caption “Audit Committee Report and Payment of Fees to Our Independent Auditor” and is incorporated herein by reference.
PART IV
Item 15.    Exhibits, Financial Statement Schedules
The following documents are filed as a part of this Annual Report on Form 10-K:
(a)Financial Statements: The financial statements filed as a part of this report are listed in Part II, Item 8.
(b)Financial Statement Schedules: The schedules are either not applicable or the required information is presented in the consolidated financial statements or notes thereto.
(c)Exhibits: The exhibits incorporated by reference or filed as a part of this Annual Report on Form 10-K are listed in the Exhibit Index prior to the signatures to this report.
Picture1.jpg SPS COMMERCE, INC.
63
Form 10-K for the Annual Period ended December 31, 2023

EXHIBIT INDEX
Incorporated By Reference
Exhibit
Number
Exhibit DescriptionForm
Date of
First
Filing
Exhibit
Number
Filed
Herewith
3.18-K05/21/20203.2
3.210-K02/21/20233.2
4.110-K02/23/20214.1
10.110-K02/20/201510.6
10.28-K02/17/201210.2
10.310-K02/21/202310.3
10.48-K02/17/201210.4
10.510-K02/21/202310.5
10.610-Q05/08/201210.6
10.710-K02/21/202310.7
10.810-Q04/26/201910.2
10.9S-1/A01/11/201010.18
10.10S-1/A01/11/201010.19
10.118-K02/03/201610.2
10.128-K03/02/202310.1
10.138-K02/18/202010.1
10.148-K02/18/202010.2
10.158-K03/02/202310.3
10.168-K07/06/202310.1
10.178-K07/06/202310.2
Picture1.jpg SPS COMMERCE, INC.
64
Form 10-K for the Annual Period ended December 31, 2023

Incorporated By Reference
Exhibit
Number
Exhibit DescriptionForm
Date of
First
Filing
Exhibit
Number
Filed
Herewith
10.18X
21.1X
23.1X
24.1Power of Attorney (included on signature page)X
31.1X
31.2X
32.1X
97X
101Interactive Data Files Pursuant to Rule 405 of Regulation S-TX
104The cover page from the Annual Report on Form 10-K for the year ended December 31, 2023, formatted in Inline XBRLX
**Indicates management contract or compensatory plan or arrangement.
Item 16.    Form 10-K Summary
None.
Picture1.jpg SPS COMMERCE, INC.
65
Form 10-K for the Annual Period ended December 31, 2023

SIGNATURES
Pursuant to the requirements of Section 13 or 15(d) of the Securities Exchange Act of 1934, the Registrant has duly caused this report to be signed on its behalf by the undersigned, thereunto duly authorized.
Dated: February 20, 2024SPS COMMERCE, INC.
By:/s/ CHADWICK COLLINS
Chadwick Collins
Chief Executive Officer
Each of the undersigned hereby appoints Chadwick Collins and Kimberly Nelson, and each of them (with full power to act alone), as attorneys and agents for the undersigned, with full power of substitution, for and in the name, place and stead of the undersigned, to sign and file with the Securities and Exchange Commission under the Securities Exchange Act of 1934, any and all amendments and exhibits to this annual report on Form 10-K and any and all applications, instruments, and other documents to be filed with the Securities and Exchange Commission pertaining to this annual report on Form 10-K or any amendments thereto, with full power and authority to do and perform any and all acts and things whatsoever requisite and necessary or desirable. Pursuant to the requirements of the Securities Exchange Act of 1934, this report has been signed below by the following persons on behalf of the registrant and in the capacities indicated on February 20, 2024.
Name and SignatureTitle
/s/ CHADWICK COLLINSChief Executive Officer and Director
Chadwick Collins(principal executive officer)
/s/ KIMBERLY NELSONExecutive Vice President and Chief Financial Officer
Kimberly Nelson(principal financial and accounting officer)
/s/ ARCHIE BLACKDirector
Archie Black
/s/ JAMES RAMSEYDirector
James Ramsey
/s/ MARTY RÉAUMEDirector
Marty Réaume 
/s/ TAMI RELLERDirector
Tami Reller 
/s/ PHILIP SORANDirector
Philip Soran 
/s/ ANNE SEMPOWSKI WARDDirector
Anne Sempowski Ward 
/s/ SVEN WEHRWEINDirector
Sven Wehrwein
Picture1.jpg SPS COMMERCE, INC.
66
Form 10-K for the Annual Period ended December 31, 2023
EX-10.18 2 a2023_xex1018non-employeed.htm EX-10.18 Document
Exhibit 10.18
SPS COMMERCE, INC.
NON-EMPLOYEE DIRECTOR COMPENSATION SUMMARY

Adopted:
12 May 2023
Effective:
Immediately prior to 2023 Annual Meeting of Stockholders

Director annual retainer: Annual retainer, payable in cash, of $35,000 per director except for the chairperson who shall receive $61,000.
Committee chairs annual retainer: Annual retainers, payable in cash, of:
Audit Committee:$ 20,000
Compensation Committee:15,000
Finance and Strategy Committee:10,000
Governance and Nominating Committee:8,000
CEO Search Committee:9,000
Committee member annual retainer: Annual retainers, payable in cash, of:
Audit Committee:$ 10,000
Compensation Committee:7,000
Finance and Strategy Committee:5,000
Governance and Nominating Committee:4,000
CEO Search Committee:4,500
Annual non-statutory stock option grants:
To purchase up to $91,250 of common stock calculated as the grant date fair value of the stock-based awards computed in accordance with FASB ASC 718 on the date of the Company’s annual meeting of stockholders using the closing sale price for a share of the Company’s common stock on the Nasdaq Global Market on the date of the annual meeting of stockholders
Granted to directors who are elected to the board at the annual meeting of stockholders
Exercise price per share equal to the closing sales price for a share on the Nasdaq Global Market on the date of the annual meeting of stockholders
Vest in four equal installments on the last day of each fiscal quarter with the first vesting occurring on the fiscal quarter end next following the date of the annual meeting of stockholders, provided the recipient remains a member of the board as of the vesting date
Maximum term of seven years measured from the date of grant
Annual restricted stock and/or deferred stock unit grants:
To acquire up to $91,250 of restricted common stock or deferred stock units, or some combination of the two, at the director’s election, calculated by dividing $91,250 by the closing sale price for a share of the Company’s common stock on the Nasdaq Global Market on the date of the Company’s annual meeting of stockholders
Granted to directors who are elected to the board at the annual meeting of stockholders
Vest in four equal installments on the last day of each fiscal quarter with the first vesting occurring on the fiscal quarter end next following the date of the annual meeting of stockholders, provided the recipient remains a member of the board as of the vesting date
Deferred stock units must be retained until completion of the director’s service on the board, and upon completion of such service, convert into an equal number of shares of the Company’s common stock. A director may defer receipt of the shares for up to ten years after completion of service.
Reimbursement of expenses: The Company shall reimburse directors for reasonable expenses incurred in connection with attending board and committee meetings.
Proration for appointment between annual meetings of stockholders: In the event a director is elected or appointed to the board or a committee on a date other than the annual meeting of stockholders, the director shall receive the



cash retainer compensation set forth above pro rated based on the days subsequent to the most recent annual meeting, but shall not receive the equity compensation awards set forth above.
Initial non-statutory stock option grants: Each director, who is initially appointed or elected to the board receives a non-statutory stock option grant to purchase up to $182,500 of common stock calculated as the grant date fair value of the stock-based awards computed in accordance with FASB ASC 718 in connection with initial appointment or election to the board. The grant is made on the fifth trading day following the Company’s first earnings release following the date of initial appointment or election to the board (the “Initial Option Grant Date”). Exercise price per share equal to the closing sales price for a share on the Nasdaq Global Market on the Initial Option Grant Date. Vest in equal monthly installments over three years commencing on the first day of the calendar month following the initial appointment or election to the board, provided the recipient remains a member of the board as of the vesting date. Maximum term of seven years measured from the date of grant.
SPS | Non-Employee Director Compensation Summary        Page 2
EX-21.1 3 a2023_xex211-subsidiarylist.htm EX-21.1 Document

Exhibit 21.1

List of SPS Commerce, Inc. Subsidiaries

Name of Company
State or Other Jurisdiction of
Incorporation/Organization
SPS International, Inc.Delaware
    SPS Commerce Australia Pty LtdAustralia
    SPS Commerce Canada, Ltd.Canada
         Intertrade Systems, Inc.Canada
    SPS Commerce Netherlands B.V.Netherlands
    SPS Europe LimitedGreat Britain
    SPS Ukraine LLCUkraine
    SPS Commerce Philippines Inc.Philippines
D Masons Software, LLCFlorida
Genius Central Systems LLCDelaware
GCommerce, Inc.Delaware
    AutoSoez Commerce, Inc.Delaware
    GCommerce Data Cloud, Inc.Delaware
    GCommerce Fulfillment Cloud, LLCDelaware
SPS Hong Kong LimitedHong Kong
TIE Commerce, Inc.Massachusetts
TIE Kinetix Holding B.V.Netherlands
    TIE Nederland B.V.Netherlands
    TIE Product Development B.V.Netherlands
    TIE MamboFive B.V.Netherlands
    TIE Kinetix Europe B.V.Netherlands
    Pingli B.V.Netherlands
    TIE Kinetix SASFrance
    TIE Kinetix DACH GmbHGermany
    Performance Analytics GmbHGermany
    TIE Kinetix, Ltd.Great Britain


EX-23.1 4 a2023_xex231-consentofaudi.htm EX-23.1 Document

Exhibit 23.1

Consent of Independent Registered Public Accounting Firm


We consent to the incorporation by reference in the registration statements on Form S-3 (Nos. 333-192392, 333-182097 and 333-174026) and on Form S-8 (Nos. 333-236671, 333-229838, 333-222438, 333-222435, 333-216288, 333-209721, 333-201673, 333-193544, 333-185972, 333-182007, 333-179236, 333-172073, 333-167315 and 333-167314) of our reports dated February 20, 2024, with respect to the consolidated financial statements of SPS Commerce, Inc. and subsidiaries and the effectiveness of internal control over financial reporting.

/s/ KPMG LLP

Minneapolis, Minnesota
February 20, 2024

EX-31.1 5 a2023_10kexhibitex311ceo.htm EX-31.1 Document

EXHIBIT 31.1
CERTIFICATION PURSUANT TO SECTION 302 OF THE SARBANES-OXLEY ACT
I, Chadwick Collins, certify that:
1.I have reviewed this Annual Report on Form 10-K of SPS Commerce, Inc.;
2.Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;
3.Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the Registrant as of, and for, the periods presented in this report;
4.The Registrant’s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the Registrant and have:
a.Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the Registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;
b.Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;
c.Evaluated the effectiveness of the Registrant’s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and
d.Disclosed in this report any change in the Registrant’s internal control over financial reporting that occurred during the Registrant’s most recent fiscal quarter (the Registrant’s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the Registrant’s internal control over financial reporting; and
5.The Registrant’s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the Registrant’s auditors and the audit committee of the Registrant’s board of directors (or persons performing the equivalent functions):
a.All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the Registrant’s ability to record, process, summarize and report financial information; and
b.Any fraud, whether or not material, that involves management or other employees who have a significant role in the Registrant’s internal control over financial reporting.
/s/ CHADWICK COLLINS
Chadwick Collins
Chief Executive Officer
(principal executive officer)
February 20, 2024

EX-31.2 6 a2023_10kexhibitex312cfo.htm EX-31.2 Document

EXHIBIT 31.2
CERTIFICATION PURSUANT TO SECTION 302 OF THE SARBANES-OXLEY ACT
I, Kimberly Nelson, certify that:
1.I have reviewed this Annual Report on Form 10-K of SPS Commerce, Inc.;
2.Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;
3.Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the Registrant as of, and for, the periods presented in this report;
4.The Registrant’s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the Registrant and have:
a.Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the Registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;
b.Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;
c.Evaluated the effectiveness of the Registrant’s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and
d.Disclosed in this report any change in the Registrant’s internal control over financial reporting that occurred during the Registrant’s most recent fiscal quarter (the Registrant’s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the Registrant’s internal control over financial reporting; and
5.The Registrant’s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the Registrant’s auditors and the audit committee of the Registrant’s board of directors (or persons performing the equivalent functions):
a.All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the Registrant’s ability to record, process, summarize and report financial information; and
b.Any fraud, whether or not material, that involves management or other employees who have a significant role in the Registrant’s internal control over financial reporting.
/s/ KIMBERLY NELSON
Kimberly Nelson
Executive Vice President and Chief Financial Officer
(principal financial and accounting officer)
February 20, 2024

EX-32.1 7 a2023_10kexhibitex321ceocfo.htm EX-32.1 Document

EXHIBIT 32.1
CERTIFICATION PURSUANT TO
18 U.S.C. §1350
AS ADOPTED PURSUANT TO
SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002
In connection with the Annual Report on Form 10-K of SPS Commerce, Inc. (the “Company”) for the period ended December 31, 2023, as filed with the Securities and Exchange Commission on the date hereof (the “Report”), the undersigned, the Chief Executive Officer and the Chief Financial Officer of the Company, hereby certify, pursuant to and for purposes of 18 U.S.C. §1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that:
1.The Report fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934; and
2.The information contained in the Report fairly presents, in all material respects, the financial condition and results of operations of the Company.
/s/ CHADWICK COLLINS
Chadwick Collins
Chief Executive Officer
(principal executive officer)
/s/ KIMBERLY NELSON
Kimberly Nelson
Executive Vice President and Chief Financial Officer
(principal financial and accounting officer)
February 20, 2024

EX-97 8 a2023_xexex97compensationr.htm EX-97 Document

EXHIBIT 97
SPS COMMERCE, INC.
REQUIRED COMPENSATION RECOVERY POLICY
Effective October 2, 2023

Policy
The Board of Directors (the “Board”) of SPS Commerce, Inc. (the “Company”) has adopted this Required Compensation Recovery Policy (this “Policy”) pursuant to Rule 10D-1 of the Securities and Exchange Act of 1934, as amended (the “Exchange Act”), the Securities and Exchange Commission (“SEC”) regulations promulgated thereunder, and applicable Nasdaq Stock Market (“Nasdaq”) listing standards. Subject to and in accordance with the terms of this Policy, upon a Recoupment Event, each Covered Executive shall be obligated to return to the Company, reasonably promptly, the amount of Erroneously Awarded Compensation that was received by such Covered Executive during the Lookback Period.

Administration
This Policy will be administered by the Compensation & Talent Committee of the Board (the “Committee”). Any determinations made by the Committee will be final and binding on all affected individuals.

Definitions
Accounting Restatement” means an accounting restatement due to the material noncompliance of the Company with any financial reporting requirement under the securities laws, including any required accounting restatement to correct an error in previously issued financial statements that is material to the previously issued financial statements, or that would result in a material misstatement if the error were corrected in the current period or left uncorrected in the current period.

Covered Executive” means each of the Company’s current and former executive officers who is or was an “officer” of the Company within the meaning of Rule 16a-1(f) of the Exchange Act.

Erroneously Awarded Compensation” means, with respect to each Covered Executive in connection with an Accounting Restatement, the excess of the amount of Incentive-Based Compensation received by the Covered Executive during the Lookback Period over the amount of Incentive-Based Compensation that otherwise would have been received had it been determined based on the restated amounts, computed without regard to any taxes paid. For Incentive-Based Compensation based on stock price or total shareholder return, where the amount of Erroneously Awarded Compensation is not subject to mathematical recalculation directly from the information in an Accounting Restatement: (a) the amount must be based on a reasonable estimate of the effect of the Accounting Restatement on the stock price or total shareholder return upon which the Incentive-Based Compensation was received; and (b) the Company must maintain documentation of the determination of that reasonable estimate and provide such documentation to Nasdaq.

Financial Reporting Measures” are any measures that are determined and presented in accordance with the accounting principles used in preparing the Company’s financial statements, and any measures derived wholly or in part from such measures. Stock price and total shareholder return are also Financial Reporting Measures. A Financial Reporting Measure need not be presented within the financial statements or included in a filing with the SEC.

Incentive-Based Compensation” is any compensation that is granted, earned, or vested based wholly or in part upon the attainment of a Financial Reporting Measure.

Lookback Period” means the three completed fiscal years immediately preceding the Required Restatement Date and any transition period (that results from a change in the Company’s fiscal year) of less than nine months within or immediately following those three completed fiscal years.

A “Recoupment Event” occurs when the Company is required to prepare an Accounting Restatement.

Required Restatement Date” means the earlier to occur of: (a) the date the Company’s Board, a committee of the Board, or the officer(s) of the Company authorized to take such action if Board action is not required, concludes, or reasonably should have concluded, that the Company is required to prepare an Accounting Restatement, or (b) the date a court, regulator, or other legally authorized body directs the Company to prepare an Accounting Restatement.

Section 409A” means Section 409A of the Internal Revenue Code and the regulations and guidance promulgated thereunder.




Amount Subject to Recovery
The Incentive-Based Compensation that is subject to recovery under this Policy includes such compensation that is received by a Covered Executive (i) on or after October 2, 2023 (even if such Incentive-Based Compensation was approved, awarded or granted prior to that date), (ii) after the individual began service as a Covered Executive, (iii) if the individual served as a Covered Executive at any time during the performance period for such Incentive-Based Compensation, and (iv) while the Company has a class of securities listed on a national securities exchange or national securities association.

The amount of Incentive-Based Compensation subject to recovery from a Covered Executive upon a Recoupment Event is the Erroneously Awarded Compensation, which amount shall be determined by the Committee in accordance with this Policy.

For purposes of this Policy, Incentive-Based Compensation is deemed “received” in the Company’s fiscal period during which the Financial Reporting Measure specified in the Incentive-Based Compensation award is attained, even if the payment or grant of the Incentive-Based Compensation occurs after the end of that period.

Recovery of Erroneously Awarded Compensation
Promptly following a Recoupment Event, the Committee will determine the amount of Erroneously Awarded Compensation for each Covered Executive, and the Company will provide each such Covered Executive with a written notice of such amount and a demand for repayment or return. Upon receipt of such notice, each affected Covered Executive shall promptly repay or return such Erroneously Awarded Compensation to the Company.
If such repayment or return is not made within a reasonable time, the Company shall recover Erroneously Awarded Compensation in a reasonable and prompt manner using any lawful method determined by the Committee; provided that recovery of any Erroneously Awarded Compensation must be made in compliance with Section 409A. The applicable Covered Executive shall also be required to reimburse the Company for any and all expenses (including legal fees) reasonably incurred by the Company in recovering such Erroneously Awarded Compensation in accordance with the immediately preceding sentence.

Limited Exceptions
Erroneously Awarded Compensation will be recovered in accordance with this Policy unless the Committee determines that recovery would be impracticable and one of the following conditions is met:

a.the direct expense paid to a third party to assist in enforcing this Policy would exceed the amount to be recovered, provided the Company has first made a reasonable effort to recover the Erroneously Awarded Compensation; or
b.the recovery would likely cause a U.S. tax-qualified retirement plan to fail to meet the requirements of Internal Revenue Code Sections 401(a)(13) and 411(a) and the regulations thereunder.

Reliance on any of the above exemptions will further comply with applicable listing standards, including without limitation, documenting the reason for the impracticability and providing required documentation to Nasdaq.

No Insurance or Indemnification
Neither the Company nor any of its affiliates or subsidiaries may indemnify any Covered Executive against the loss of any Erroneously Awarded Compensation (or related expenses incurred by the Covered Executive) pursuant to a recovery of Erroneously Awarded Compensation under this Policy, nor will the Company nor any of its affiliates or subsidiaries pay or reimburse a Covered Executive for any insurance premiums on any insurance policy obtained by the Covered Executive to protect against the forfeiture or recovery of any compensation pursuant to this Policy.

Interpretation
The Committee is authorized to interpret and construe this Policy and to make all determinations necessary, appropriate, or advisable for the administration of this Policy. This Policy shall be applied and interpreted in a manner that is consistent with the requirements of Rule 10D-1 and any applicable regulations, rules or standards adopted by SEC or the rules of any national securities exchange or national securities association on which the Company’s securities are listed. In the event that this Policy does not meet the requirements of Rule 10D-1, the SEC regulations promulgated thereunder, or the rules of any national securities exchange or national securities association on which the Company’s securities are listed, this Policy shall be deemed to be amended to meet such requirements.








Indemnification of Policy Administrators
Any members of the Committee who participate in the administration of this Policy shall not be personally liable for any action, determination or interpretation made with respect to this Policy and shall be fully indemnified by the Company to the fullest extent permitted under applicable law and Company governing documents and policies with respect to any such action, determination or interpretation. The foregoing shall not limit any other rights to indemnification of the members of the Committee under applicable law or Company governing documents and policies.

Amendment; Termination
The Board or the Committee may amend this Policy in its discretion and shall amend this Policy as it deems necessary to comply with the regulations adopted by the SEC under Rule 10D-1 and the rules of any national securities exchange or national securities association on which the Company’s securities are listed. The Board or the Committee may terminate this Policy at any time. Notwithstanding anything herein to the contrary, no amendment or termination of this Policy shall be effective if that amendment or termination would cause the Company to violate any federal securities laws, SEC rules or the rules of any national securities exchange or national securities association on which the Company’s securities are listed.

Other Recoupment Rights
The Board intends that this Policy will be applied to the fullest extent of the law. Any Incentive-Based Compensation provided for in an employment agreement, incentive compensation plan, policy, program or agreement, equity award, or similar plan, program or agreement shall, as a condition to the grant of any benefit thereunder, be subject to the terms of this Policy. Any right of recoupment under this Policy is in addition to, and not in lieu of, any other remedies or rights of recoupment that may be available to the Company pursuant to the terms of any similar provision in any employment agreement, incentive compensation plan policy, program or agreement, equity award, or similar plan, program or agreement and any other legal remedies available to the Company. This Policy is in addition to any other clawback or compensation recovery, recoupment or forfeiture policy in effect or that may be adopted by the Company from time to time, or any laws, rules or listing standards applicable to the Company, including without limitation, the Company’s right to recoup compensation subject to Section 304 of the Sarbanes-Oxley Act of 2002 and the Company’s Supplemental Compensation Recovery Policy.

Successors
This Policy shall be binding and enforceable against all Covered Executives and their beneficiaries, heirs, executors, administrators or other legal representatives.

EX-101.SCH 9 spsc-20231231.xsd XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT 0000001 - Document - Cover link:presentationLink link:calculationLink link:definitionLink 0000002 - Document - Audit Information link:presentationLink link:calculationLink link:definitionLink 0000003 - Statement - Consolidated Balance Sheets link:presentationLink link:calculationLink link:definitionLink 0000004 - Statement - Consolidated Balance Sheets (Parenthetical) link:presentationLink link:calculationLink link:definitionLink 0000005 - Statement - Consolidated Statements of Comprehensive Income link:presentationLink link:calculationLink link:definitionLink 0000006 - Statement - Consolidated Statements of Comprehensive Income (Parenthetical) link:presentationLink link:calculationLink link:definitionLink 0000007 - Statement - Consolidated Statements of Stockholders' Equity link:presentationLink link:calculationLink link:definitionLink 0000008 - Statement - Consolidated Statements of Cash Flows link:presentationLink link:calculationLink link:definitionLink 0000009 - Disclosure - General link:presentationLink link:calculationLink link:definitionLink 0000010 - Disclosure - Business Acquisitions link:presentationLink link:calculationLink link:definitionLink 0000011 - Disclosure - Revenue link:presentationLink link:calculationLink link:definitionLink 0000012 - Disclosure - Deferred Costs link:presentationLink link:calculationLink link:definitionLink 0000013 - Disclosure - Fair Value Measurements link:presentationLink link:calculationLink link:definitionLink 0000014 - Disclosure - Allowance for Credit Losses link:presentationLink link:calculationLink link:definitionLink 0000015 - Disclosure - Property and Equipment, Net link:presentationLink link:calculationLink link:definitionLink 0000016 - Disclosure - Goodwill and Intangible Assets, Net link:presentationLink link:calculationLink link:definitionLink 0000017 - Disclosure - Commitments and Contingencies link:presentationLink link:calculationLink link:definitionLink 0000018 - Disclosure - Stockholders' Equity link:presentationLink link:calculationLink link:definitionLink 0000019 - Disclosure - Stock-Based Compensation link:presentationLink link:calculationLink link:definitionLink 0000020 - Disclosure - Income Taxes link:presentationLink link:calculationLink link:definitionLink 0000021 - Disclosure - Other Income and Expense link:presentationLink link:calculationLink link:definitionLink 0000022 - Disclosure - Net Income Per Share link:presentationLink link:calculationLink link:definitionLink 0000023 - Disclosure - Retirement Savings Plan link:presentationLink link:calculationLink link:definitionLink 0000024 - Disclosure - Geographic Information link:presentationLink link:calculationLink link:definitionLink 0000025 - Disclosure - Related Party Transactions link:presentationLink link:calculationLink link:definitionLink 9954471 - Disclosure - General (Policies) link:presentationLink link:calculationLink link:definitionLink 9954472 - Disclosure - General (Tables) link:presentationLink link:calculationLink link:definitionLink 9954473 - Disclosure - Business Acquisitions (Tables) link:presentationLink link:calculationLink link:definitionLink 9954474 - Disclosure - Revenue (Tables) link:presentationLink link:calculationLink link:definitionLink 9954475 - Disclosure - Deferred Costs (Tables) link:presentationLink link:calculationLink link:definitionLink 9954476 - Disclosure - Fair Value Measurements (Tables) link:presentationLink link:calculationLink link:definitionLink 9954477 - Disclosure - Allowance for Credit Losses (Tables) link:presentationLink link:calculationLink link:definitionLink 9954478 - Disclosure - Property and Equipment, Net (Tables) link:presentationLink link:calculationLink link:definitionLink 9954479 - Disclosure - Goodwill and Intangible Assets, Net (Tables) link:presentationLink link:calculationLink link:definitionLink 9954480 - Disclosure - Commitments and Contingencies (Tables) link:presentationLink link:calculationLink link:definitionLink 9954481 - Disclosure - Stockholders' Equity (Tables) link:presentationLink link:calculationLink link:definitionLink 9954482 - Disclosure - Stock-Based Compensation (Tables) link:presentationLink link:calculationLink link:definitionLink 9954483 - Disclosure - Income Taxes (Tables) link:presentationLink link:calculationLink link:definitionLink 9954484 - Disclosure - Other Income and Expense (Tables) link:presentationLink link:calculationLink link:definitionLink 9954485 - Disclosure - Net Income Per Share (Tables) link:presentationLink link:calculationLink link:definitionLink 9954486 - Disclosure - Retirement Contributions (Tables) link:presentationLink link:calculationLink link:definitionLink 9954487 - Disclosure - Geographic Information (Tables) link:presentationLink link:calculationLink link:definitionLink 9954488 - Disclosure - Related Party Transactions (Tables) link:presentationLink link:calculationLink link:definitionLink 9954489 - Disclosure - General - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954490 - Disclosure - General - Summary of Estimated Useful Lives of Property and Equipment (Details) link:presentationLink link:calculationLink link:definitionLink 9954491 - Disclosure - General - Summary of Estimated Useful Lives of Intangible Assets (Details) link:presentationLink link:calculationLink link:definitionLink 9954492 - Disclosure - Business Acquisitions - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954493 - Disclosure - Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Details) link:presentationLink link:calculationLink link:definitionLink 9954494 - Disclosure - Business Acquisitions - Schedule of Estimated Fair Value of Purchased Intangible Assets and their Estimated Useful Lives (Details) link:presentationLink link:calculationLink link:definitionLink 9954495 - Disclosure - Revenue - Summary of Revenues by Revenue Stream (Details) link:presentationLink link:calculationLink link:definitionLink 9954496 - Disclosure - Revenue - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954497 - Disclosure - Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details) link:presentationLink link:calculationLink link:definitionLink 9954498 - Disclosure - Deferred Costs - Summary of Deferred Costs Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9954499 - Disclosure - Fair Value Measurements (Details) link:presentationLink link:calculationLink link:definitionLink 9954500 - Disclosure - Allowance for Credit Losses (Details) link:presentationLink link:calculationLink link:definitionLink 9954501 - Disclosure - Property and Equipment, Net - Schedule of Property and Equipment, Net (Details) link:presentationLink link:calculationLink link:definitionLink 9954502 - Disclosure - Property and Equipment, Net - Schedule of Depreciation and Amortization Expense of Property and Equipment (Details) link:presentationLink link:calculationLink link:definitionLink 9954503 - Disclosure - Goodwill and Intangible Assets, Net - Schedule of Activity in Goodwill (Details) link:presentationLink link:calculationLink link:definitionLink 9954504 - Disclosure - Goodwill and Intangible Assets, Net - Intangible Assets (Details) link:presentationLink link:calculationLink link:definitionLink 9954505 - Disclosure - Goodwill and Intangible Assets, Net - Schedule of Amortization Expense of Intangible Assets (Details) link:presentationLink link:calculationLink link:definitionLink 9954506 - Disclosure - Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets (Details) link:presentationLink link:calculationLink link:definitionLink 9954507 - Disclosure - Commitments and Contingencies - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954508 - Disclosure - Commitments and Contingencies - Components of Lease Expense (Details) link:presentationLink link:calculationLink link:definitionLink 9954509 - Disclosure - Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details) link:presentationLink link:calculationLink link:definitionLink 9954510 - Disclosure - Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Details) link:presentationLink link:calculationLink link:definitionLink 9954511 - Disclosure - Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details) link:presentationLink link:calculationLink link:definitionLink 9954511 - Disclosure - Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details) link:presentationLink link:calculationLink link:definitionLink 9954512 - Disclosure - Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details) link:presentationLink link:calculationLink link:definitionLink 9954513 - Disclosure - Stockholders' Equity - Share Repurchase Plan (Details) link:presentationLink link:calculationLink link:definitionLink 9954514 - Disclosure - Stockholders' Equity - Summary of Stock Repurchase Activity by Year (Details) link:presentationLink link:calculationLink link:definitionLink 9954515 - Disclosure - Stock-Based Compensation - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954516 - Disclosure - Stock-Based Compensation - Stock-Based Compensation Expense (Details) link:presentationLink link:calculationLink link:definitionLink 9954517 - Disclosure - Stock-Based Compensation - Stock Option Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9954518 - Disclosure - Stock-Based Compensation - Summary of Additional Information Related to Stock Options (Details) link:presentationLink link:calculationLink link:definitionLink 9954519 - Disclosure - Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Details) link:presentationLink link:calculationLink link:definitionLink 9954520 - Disclosure - Stock-Based Compensation - PSU, RSU, RSA, and DSU (Details) link:presentationLink link:calculationLink link:definitionLink 9954521 - Disclosure - Stock-Based Compensation - Summary of ESPP Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9954522 - Disclosure - Stock-Based Compensation - Fair Value Estimation of Common Stock, Assumptions (Details) link:presentationLink link:calculationLink link:definitionLink 9954523 - Disclosure - Income Taxes - Schedule of Provision for Income Taxes (Details) link:presentationLink link:calculationLink link:definitionLink 9954524 - Disclosure - Income Taxes - Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income (Details) link:presentationLink link:calculationLink link:definitionLink 9954525 - Disclosure - Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Details) link:presentationLink link:calculationLink link:definitionLink 9954526 - Disclosure - Income Taxes - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954527 - Disclosure - Other Income and Expense - Summary of Other Income (Expense), Net (Details) link:presentationLink link:calculationLink link:definitionLink 9954528 - Disclosure - Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Details) link:presentationLink link:calculationLink link:definitionLink 9954529 - Disclosure - Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details) link:presentationLink link:calculationLink link:definitionLink 9954530 - Disclosure - Retirement Contributions - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954531 - Disclosure - Retirement Contributions - Schedule of Total Contribution to the Plan (Details) link:presentationLink link:calculationLink link:definitionLink 9954532 - Disclosure - Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes (Details) link:presentationLink link:calculationLink link:definitionLink 9954533 - Disclosure - Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States (Details) link:presentationLink link:calculationLink link:definitionLink 9954534 - Disclosure - Related Party Transactions - Summary of Contributions to Foundation (Details) link:presentationLink link:calculationLink link:definitionLink EX-101.CAL 10 spsc-20231231_cal.xml XBRL TAXONOMY EXTENSION CALCULATION LINKBASE DOCUMENT EX-101.DEF 11 spsc-20231231_def.xml XBRL TAXONOMY EXTENSION DEFINITION LINKBASE DOCUMENT EX-101.LAB 12 spsc-20231231_lab.xml XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT Stock Appreciation Rights (SARs) Stock Appreciation Rights (SARs) [Member] Deferred Costs Deferred Charges, Policy [Policy Text Block] Pay vs Performance Disclosure [Line Items] Entity Voluntary Filers Entity Voluntary Filers Accrued expenses Accrued Liabilities, Current Statistical Measurement Statistical Measurement [Domain] Research and development Research and Development Expense Changes in assets and liabilities, net of effects of acquisitions Increase (Decrease) in Operating Capital [Abstract] Underlying Security Market Price Change Underlying Security Market Price Change, Percent Related Party Transaction [Line Items] Related Party Transaction [Line Items] Stock options contractual term range Share-Based Compensation Arrangement by Share-Based Payment Award, Expiration Period Cash Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Cash and Equivalents Net income per share Earnings Per Share, Basic And Diluted EPS [Abstract] Earnings Per Share, Basic And Diluted EPS Award Type Award Type [Domain] Fair Value as of Grant Date Award Grant Date Fair Value Beginning balance (in shares) Ending balance (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number Statement of Stockholders' Equity [Abstract] Statement of Stockholders' Equity [Abstract] Cash paid Payments to Acquire Businesses, Gross Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block] Research and Development Research and Development Expense, Policy [Policy Text Block] Summary of Cash Equivalents and Investments Cash, Cash Equivalents and Investments [Table Text Block] RSUs & DSUs Restricted Stock Units And Deferred Stock Units [Member] Restricted stock units and deferred stock units member. Deferred income tax liabilities Deferred Income Tax Liabilities, Net MNPI Disclosure Timed for Compensation Value MNPI Disclosure Timed for Compensation Value [Flag] PSUs Performance Shares [Member] Audit Information [Abstract] Audit Information Foreign derived intangible income Effective Income Tax Rate Reconciliation, FDII, Percent Accounts payable Accounts Payable, Current Computer equipment Computer Equipment [Member] Restatement Determination Date: Restatement Determination Date [Axis] Other income (expense), net Total other income (expense), net Nonoperating Income (Expense) U.S. statutory federal income tax rate Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent Commitments and contingencies Commitments and Contingencies Insider Trading Policies and Procedures [Line Items] Outstanding and exercisable options (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number Rule 10b5-1 Arrangement Terminated Rule 10b5-1 Arrangement Terminated [Flag] Disaggregation Of Revenue [Line Items] Disaggregation of Revenue [Line Items] GCommerce Inc GCommerce Inc [Member] GCommerce Inc 2028 Lessee, Operating Lease, Liability, to be Paid, Year Five Current leased space Lessee, Operating Lease, Area Of Leased Space Area of leased space. Restatement does not require Recovery Restatement Does Not Require Recovery [Text Block] Stockholders' Equity Equity [Text Block] Latest timing of billings Recurring Revenues Timing Of Billings Latest Period Recurring revenues timing of billings latest period. Cash paid for amounts included in the measurement of lease liabilities Cash Paid For Amounts Included In Measurement Of Lease Liabilities [Abstract] Cash paid for amounts included in the measurement of lease liabilities. Collaborative Arrangement and Arrangement Other than Collaborative Collaborative Arrangement and Arrangement Other than Collaborative [Axis] Net proceeds from employee stock purchase plan activity Proceeds from Stock Plans Income Taxes Income Tax Disclosure [Text Block] Deferred revenue Increase (Decrease) in Contract with Customer, Liability Dividend yield Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate Leases Lessee, Leases [Policy Text Block] Revenue Recognition Revenue [Policy Text Block] Geographic Distribution Geographic Distribution [Domain] Other assets Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Other Assets Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Other Assets Current liabilities Liabilities, Current [Abstract] Federal Deferred Federal Income Tax Expense (Benefit) Preferred stock, par value (in dollars per share) Preferred Stock, Par or Stated Value Per Share Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding Preferred Stock, Value, Issued Business Acquisition [Line Items] Business Acquisition [Line Items] Weighted Average Grant Date Fair Value ($/share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract] Payments for contingent consideration Payment for Contingent Consideration Liability, Financing Activities Diluted (in dollars per share) Earnings Per Share, Diluted Number of offering periods Share-based Compensation Arrangement By Share-based Payment Award, Number Of Offering Periods Share-based Compensation Arrangement By Share-based Payment Award, Number Of Offering Periods PEO Total Compensation Amount PEO Total Compensation Amount Schedule Of Property Plant And Equipment [Table] Property, Plant and Equipment [Table] Intangible Assets Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block] Accounts receivable, net Accounts Receivable, after Allowance for Credit Loss, Current Goodwill [Roll Forward] Goodwill [Roll Forward] Trading Arrangements, by Individual Trading Arrangements, by Individual [Table] Treasury stock, shares (in shares) Beginning balance (in shares) Ending balance (in shares) Treasury Stock, Common, Shares Beginning balance (in shares) Ending balance (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number Trading Symbol Trading Symbol Non-PEO NEO Average Compensation Actually Paid Amount Non-PEO NEO Average Compensation Actually Paid Amount Schedule of Allowance for Credit Losses Activity Included in Accounts Receivable Net Financing Receivable, Allowance for Credit Loss [Table Text Block] Granted (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price Increase (decrease) resulting from: Effective Income Tax Rate Reconciliation, Percent [Abstract] Weighted-average fair value per share of options granted (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value Collaborative Arrangement and Arrangement Other than Collaborative [Table] Collaborative Arrangement and Arrangement Other than Collaborative [Table] Net income Net income Net income Net Income (Loss) Thereafter Finite-Lived Intangible Asset, Expected Amortization, after Year Five Total current liabilities Liabilities, Current Fair Value Disclosures [Abstract] Fair Value Disclosures [Abstract] Foreign Currency Translation Foreign Currency Transactions and Translations Policy [Policy Text Block] Changed Peer Group, Footnote Changed Peer Group, Footnote [Text Block] Company Selected Measure Name Company Selected Measure Name Operating lease liabilities Deferred Tax Assets Operating Lease Liabilities Deferred tax assets operating lease liabilities. LIABILITIES AND STOCKHOLDERS’ EQUITY Liabilities and Equity [Abstract] Finite-Lived Intangible Assets [Line Items] Finite-Lived Intangible Assets [Line Items] Employee Stock Purchase Plan Employee Stock [Member] Amortized deferred costs Deferred Costs Amortized Deferred costs amortized. Set-Up Fees Set Up Fees [Member] Set up fees. Summary of ESPP Activity Schedule of Share-Based Compensation, Employee Stock Purchase Plan, Activity [Table Text Block] Stockholders' equity Equity, Attributable to Parent [Abstract] Concentration Risk Benchmark Concentration Risk Benchmark [Domain] Exercised (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period Balance, beginning of year Balance, end of year Contract with Customer, Liability Components of Computation of Basic and Diluted Net Income Per Share Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] Foundation contributions Related Party Transaction, Amounts of Transaction U.S. Internal Revenue Code Internal Revenue Service (IRS) [Member] Vesting period Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period Executive Category: Executive Category [Axis] Summary of Estimated Useful Lives of Intangible Assets Schedule of Indefinite-Lived Intangible Assets [Table Text Block] Effect of foreign currency exchange rate changes Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations Unused & Expired Share Repurchase Value Treasury Stock, Unused and Expired Repurchase Value Treasury Stock, Unused and Expired Repurchase Value Number of Shares Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward] Exercised (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price Name Measure Name Total net deferred income tax assets Deferred Tax Assets, Net of Valuation Allowance Name Forgone Recovery, Individual Name Goodwill Goodwill Balance, beginning of year Balance, end of year Goodwill Schedule of Estimated Useful Lives of Property and Equipment Schedule of Property and Equipment, Net Property, Plant and Equipment [Table Text Block] Equity Components Equity Components [Axis] Financial Instruments [Domain] Financial Instruments [Domain] Additional 402(v) Disclosure Additional 402(v) Disclosure [Text Block] Accrued expenses Increase (Decrease) in Accrued Liabilities Certificates of deposit Certificates of Deposit [Member] Shares available for grant (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Available for Grant Schedule Of Stockholders Equity [Table] Schedule Of Stockholders Equity [Table] Schedule of stockholders equity. Granted (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross Underlying Securities Award Underlying Securities Amount Entity Small Business Entity Small Business Volatility Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Weighted Average Volatility Rate 2027 Finite-Lived Intangible Asset, Expected Amortization, Year Four Local Phone Number Local Phone Number Accounts receivable Increase (Decrease) in Accounts Receivable Recovery of Erroneously Awarded Compensation Disclosure [Line Items] Unrealized gain (loss) on investments, net of tax of $644, $147, and $(34), respectively Unrealized gain (loss) on investments, net of tax OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax Recognized set-up fees Deferred Revenue Amortized Set Up Fees Deferred revenue amortized set up fees. Deferred costs, non-current Deferred Costs, Noncurrent Vested at period end (in shares) Share-Based Compensation Arrangement By Share-Based Payment Award, Equity Instruments Other Than Options, Vested At Period End Share-Based Compensation Arrangement By Share-Based Payment Award, Equity Instruments Other Than Options, Vested At Period End Operating lease liabilities, non-current Operating Lease, Liability, Noncurrent RSUs Restricted Stock Units (RSUs) [Member] PSU, RSU, RSA, and DSU Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block] Forgone Recovery due to Violation of Home Country Law, Amount Forgone Recovery due to Violation of Home Country Law, Amount Retirement Benefits [Abstract] Retirement Benefits [Abstract] Summary of Remaining Purchase Commitments and Estimated Purchase Timing Contractual Obligation, Fiscal Year Maturity [Table Text Block] Income Statement Location Income Statement Location [Axis] Research and development credit Effective Income Tax Rate Reconciliation, Tax Credit, Research, Percent Collaborative Arrangement and Arrangement Other than Collaborative Collaborative Arrangement and Arrangement Other than Collaborative [Domain] Schedule of Future Minimum Payments Under Operating Leases Lessee, Operating Lease, Liability, to be Paid, Maturity [Table Text Block] Summary of Additional Information Related to Stock Options Schedule of Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Grant Date Intrinsic Value [Table Text Block] Increase (decrease) in estimated value of deferred income tax assets Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Taxes Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Taxes Cash and Cash Equivalents Cash and Cash Equivalents, Policy [Policy Text Block] Number of extension options Lessee, Operating Lease, Number Of Extension Options Lessee, Operating Lease, Number Of Extension Options Other assets Other Assets, Noncurrent [Abstract] Product and Service Product and Service [Domain] Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table Text Block] Other Performance Measure, Amount Other Performance Measure, Amount Aggregate Available Trading Arrangement, Securities Aggregate Available Amount Components of Lease Expense Lease, Cost [Table Text Block] Research and development Research and Development Expense [Member] Cash flows from investing activities Net Cash Provided by (Used in) Investing Activities [Abstract] Insider Trading Policies and Procedures Not Adopted Insider Trading Policies and Procedures Not Adopted [Text Block] Fair value of options vested Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested in Period, Fair Value Anti-dilutive shares (in shares) Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount Award Type Award Type [Axis] Granted (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period Non-cash financing activity: Noncash Investing and Financing Items [Abstract] ICFR Auditor Attestation Flag ICFR Auditor Attestation Flag General and administrative General and Administrative Expense [Member] Property and equipment, cost Property, Plant and Equipment, Gross Weighted average remaining contractual life Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term Right-of-use assets obtained in exchange for operating lease liabilities Right-of-Use Asset Obtained in Exchange for Operating Lease Liability Accounts Receivable, Allowance for Credit Loss [Roll Forward] Accounts Receivable, Allowance for Credit Loss [Roll Forward] Trading Arrangement: Trading Arrangement [Axis] Related Party Transactions Related Party Transactions Disclosure [Text Block] Less: imputed interest Lessee, Operating Lease, Liability, Undiscounted Excess Amount Shares purchased (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Purchased for Award Use of Estimates Use of Estimates, Policy [Policy Text Block] PEO Actually Paid Compensation Amount PEO Actually Paid Compensation Amount Schedule of Provision for Income Taxes Schedule of Components of Income Tax Expense (Benefit) [Table Text Block] Entity File Number Entity File Number Geographic Information Geographic Information [Text Block] The entire disclosure of geographic information. Stock plan offering period Share-based Compensation Arrangement By Share-based Payment Award, Stock Plan Offering Period Share-based Compensation Arrangement By Share-based Payment Award, Stock Plan Offering Period Thereafter Lessee, Operating Lease, Liability, to be Paid, after Year Five Operating lease liabilities Operating Lease, Liability, Current Employee stock purchase plan (in shares) Stock Issued During Period, Shares, Employee Stock Purchase Plans Auditor Firm ID Auditor Firm ID Maturities of investments Proceeds from Sale and Maturity of Debt Securities, Available-for-Sale Amortization of intangible assets Amortization of Intangible Assets Entity Shell Company Entity Shell Company 2026 Lessee, Operating Lease, Liability, to be Paid, Year Three Business Acquisition, Acquiree Business Acquisition, Acquiree [Domain] Property, Plant and Equipment [Line Items] Property, Plant and Equipment [Line Items] Accounting Pronouncements Recently Adopted and Accounting Pronouncements Not Yet Adopted New Accounting Pronouncements, Policy [Policy Text Block] Intangible assets, net Total future amortization Finite-Lived Intangible Assets, Net Restatement Determination Date Restatement Determination Date Average price per repurchased share (in dollars per share) Shares Acquired, Average Cost Per Share Schedule of Accounting Policies [Line Items] Schedule Of Accounting Policies [Line Items] Schedule of accounting policies. Rule 10b5-1 Arrangement Adopted Rule 10b5-1 Arrangement Adopted [Flag] Accumulated Amortization Finite-Lived Intangible Assets, Accumulated Amortization 2025 Lessee, Operating Lease, Liability, to be Paid, Year Two Customer contract cancellation period Customer Contract Cancellation Period Customer contract cancellation period. TIE Kinetix Holding B.V. TIE Kinetix Holding B.V. [Member] TIE Kinetix Holding B.V. Stock Price or TSR Estimation Method Stock Price or TSR Estimation Method [Text Block] Variable lease cost Variable Lease, Cost Operating lease cost Operating Lease, Cost Impairment of Long-Lived Assets Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block] Common stock, shares issued (in shares) Common Stock, Shares, Issued Vested and common stock issued (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period Total consideration Business Combination, Consideration Transferred Gross profit Gross Profit Deferred revenue Contract with Customer, Liability, Current Retirement contributions Defined Contribution Plan Employer Not Note Discretionary Contribution Amount Defined contribution plan employer not note discretionary contribution amount. Weighted Average Fair Value Per Share of Options Granted, Assumptions Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block] Treasury Stock, at cost; 2,151,098 shares Share Value Repurchased Treasury Stock, Common, Value Security Exchange Name Security Exchange Name Stock-Based Compensation Share-Based Payment Arrangement [Policy Text Block] Accumulated other comprehensive gain (loss) Accumulated Other Comprehensive Income (Loss), Net of Tax Stock options Employee Stock Option [Member] Schedule of Amortization Expense of Intangible Assets Finite-Lived Intangible Assets Amortization Expense [Table Text Block] Investments Investment, Policy [Policy Text Block] Defined benefit plan employer matching contribution percent Defined Contribution Plan, Employer Matching Contribution, Percent of Match Schedule of Depreciation and Amortization Expense of Property and Equipment Depreciation And Amortization Expense Of Property And Equipment Table [Table Text Block] Depreciation and amortization expense of property and equipment. Unrecognized stock-based compensation, expected to be recognized, weighted average period Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition PSUs, RSUs, RSAs and DSUs Performance Share Units Restricted Stock Units Restricted Stock Awards And Deferred Stock Units [Member] Performance Share Units, Restricted Stock Units, Restricted Stock Awards and Deferred Stock Units. Maximum Maximum [Member] Comprehensive income Comprehensive Income (Loss), Net of Tax, Attributable to Parent Unrecognized stock-based compensation expense Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount Revenue Recognition [Table] Revenue Recognition [Table] Revenue Recognition. Document Type Document Type Analytics Analytics [Member] Analytics. Summary of Contributions to Foundation Schedule of Related Party Transactions [Table Text Block] Additions from business acquisitions Goodwill, Acquired During Period Contract with Customer, Duration Contract with Customer, Duration [Axis] Geographic Concentration Risk Geographic Concentration Risk [Member] Tabular List, Table Tabular List [Table Text Block] Domestic Tax Authority Domestic Tax Authority [Member] Entity Address, Address Line One Entity Address, Address Line One Repurchases of common stock Shares repurchased cost Treasury Stock, Value, Acquired, Cost Method Entity Address, Address Line Two Entity Address, Address Line Two InterTrade Systems Inc. InterTrade Systems Inc. [Member] InterTrade Systems Inc. Stock-Based Compensation Share-Based Payment Arrangement [Text Block] Federal Current Federal Tax Expense (Benefit) Basis of Presentation Basis of Accounting, Policy [Policy Text Block] Other, net Other Noncash Income (Expense) Weighted Average Exercise Price ($/share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract] Business Acquisition Business Acquisition [Axis] Allowance for credit losses Balance, beginning of year Balance, end of year Accounts Receivable, Allowance for Credit Loss, Current Net operating loss carryforward Operating Loss Carryforwards State Deferred State and Local Income Tax Expense (Benefit) Intangible Assets Schedule of Finite-Lived Intangible Assets [Table Text Block] Income Statement [Abstract] Income Statement [Abstract] Decrease in estimated value of deferred income tax assets Adjustment, intangible assets Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Intangibles Forfeited (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period Award receipt delay Share-Based Compensation Arrangement by Share-Based Payment Award, Award Receipt Delay Share-Based Compensation Arrangement by Share-Based Payment Award, Award Receipt Delay Title of 12(b) Security Title of 12(b) Security Insider Trading Policies and Procedures Adopted Insider Trading Policies and Procedures Adopted [Flag] Business Acquisitions Business Combination Disclosure [Text Block] Accrued expenses Deferred Tax Assets, Tax Deferred Expense, Reserves and Accruals, Accrued Liabilities Aggregate Erroneous Compensation Not Yet Determined Aggregate Erroneous Compensation Not Yet Determined [Text Block] Losses expected to expire unused Operating Loss Carryforward Expirable Unused Amount The amount of operating loss carryforwards expected to expire unused due to limitations. Numerator Net Income (Loss) Attributable to Parent [Abstract] Beginning balance (in dollars per share) Ending balance (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value Shares issued pursuant to stock awards Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture Other assets Other Assets, Current Income Tax Disclosure [Abstract] Income Tax Disclosure [Abstract] Forgone Recovery due to Expense of Enforcement, Amount Forgone Recovery due to Expense of Enforcement, Amount Unrealized gain (loss) on investments, tax OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, Tax Share-based Payment Arrangement [Abstract] Share-Based Payment Arrangement [Abstract] Fair Value Measurements Financial Instruments Disclosure [Text Block] Entity Tax Identification Number Entity Tax Identification Number Contributions to Foundation Contributions To Foundation [Member] Contributions To Foundation Foreign currency translation Goodwill, Foreign Currency Translation Gain (Loss) 401(k) stock match Four Zero One K Stock Match [Member] Four zero one (k) stock match. Total Lease expense Lease, Cost Statistical Measurement Statistical Measurement [Axis] Financial Instrument [Axis] Financial Instrument [Axis] Balance Sheet Location [Domain] Balance Sheet Location [Domain] Entity Interactive Data Current Entity Interactive Data Current Disaggregation Of Revenue [Table] Disaggregation of Revenue [Table] Decrease in provisional amounts for consideration transferred Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Consideration Transferred Schedule Of Financial Instruments [Table] Debt Securities, Available-for-Sale [Table] Total Shareholder Return Amount Total Shareholder Return Amount Repurchases of common stock Payments for Repurchase of Common Stock Entity Common Stock, Shares Outstanding Entity Common Stock, Shares Outstanding Adjustment To PEO Compensation, Footnote Adjustment To PEO Compensation, Footnote [Text Block] Entity Well-known Seasoned Issuer Entity Well-known Seasoned Issuer Foreign Deferred Foreign Income Tax Expense (Benefit) Share-based Compensation Arrangement by Share-based Payment Award [Line Items] Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items] Summary of Other Income (Expense), Net Schedule of Other Nonoperating Income (Expense) [Table Text Block] Retained earnings Retained Earnings (Accumulated Deficit) Measure: Measure [Axis] Commitments and Contingencies Disclosure [Abstract] Commitments and Contingencies Disclosure [Abstract] Name Outstanding Recovery, Individual Name Depreciation and amortization Deferred Tax Liabilities Property Plant And Equipment And Other Finite Lived Assets Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment and long-lived assets. Entity Incorporation, State or Country Code Entity Incorporation, State or Country Code Estimated fair value of assets and liabilities acquired: Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Net [Abstract] Deferred income tax liabilities Deferred Tax Liabilities, Net [Abstract] Current assets Assets, Current [Abstract] Goodwill Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block] Accounts receivable Accounts Receivable, before Allowance for Credit Loss, Current Computer equipment Computer Equipment And Software [Member] Computer equipment and software. Significant Components of Deferred Tax Assets (Liabilities) Schedule of Deferred Tax Assets and Liabilities [Table Text Block] Entity Address, State or Province Entity Address, State or Province Compensation Actually Paid vs. Total Shareholder Return Compensation Actually Paid vs. Total Shareholder Return [Text Block] Net Cash Provided by (Used in) Operating Activities [Abstract] Net Cash Provided by (Used in) Operating Activities [Abstract] Schedule Of Related Party Transactions By Related Party [Table] Schedule of Related Party Transactions, by Related Party [Table] 2024 Purchase Obligation, to be Paid, Year One 2024 Finite-Lived Intangible Asset, Expected Amortization, Year One Operating cash flows from operating leases Operating Lease, Payments Common stock, shares outstanding (in shares) Beginning balance (in shares) Ending balance (in shares) Common Stock, Shares, Outstanding Other Acquisition Series of Individually Immaterial Business Acquisitions [Member] Other Income and Expenses [Abstract] Other Income and Expenses [Abstract] PEO PEO [Member] Concentration of Credit Risk Concentration Risk, Credit Risk, Policy [Policy Text Block] Auditor Location Auditor Location Retirement Contributions Retirement Benefits [Text Block] Cash equivalents: Cash Equivalents [Member] Net operating loss and credit carryforwards Deferred Tax Assets Operating Loss And Tax Credit Carryforwards Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards and deductible tax credit carryforwards including, but not limited to, research, foreign, general business, alternative minimum tax, and other deductible tax credit carryforwards. Common stock, par value (in dollars per share) Common Stock, Par or Stated Value Per Share Maximum allowable contribution by employee percentage Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent Sale of Stock Sale of Stock [Axis] Other Effective Income Tax Rate Reconciliation, Other Adjustments, Percent Reclassification of unrealized (gain) loss on investments into earnings, tax Other Comprehensive Income (Loss), Reclassification Adjustment from AOCI for Sale of Securities, Tax Net cash used in investing activities Net Cash Provided by (Used in) Investing Activities 2021 Program 2021 Stock Repurchase Program [Member] 2021 Stock Repurchase Program Options (#) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward] Outstanding Aggregate Erroneous Compensation Amount Outstanding Aggregate Erroneous Compensation Amount Effective tax rate Effective Income Tax Rate Reconciliation, Percent Total operating lease liabilities Operating Lease, Liability Total liabilities Liabilities Volatility Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate General Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block] Total Shareholder Return Vs Peer Group Total Shareholder Return Vs Peer Group [Text Block] Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Line Items] Deferred costs Deferred Tax Liabilities Deferred Revenue And Expense Deferred tax liabilities deferred revenue and expense. Accumulated Other Comprehensive Gain (Loss) AOCI Attributable to Parent [Member] Aggregate Erroneous Compensation Amount Aggregate Erroneous Compensation Amount Property and Equipment, Net Property, Plant and Equipment Disclosure [Text Block] All Executive Categories All Executive Categories [Member] Deferred revenue, non-current Contract with Customer, Liability, Noncurrent Non-Rule 10b5-1 Arrangement Adopted Non-Rule 10b5-1 Arrangement Adopted [Flag] Research and development capitalized Deferred Tax Assets, in Process Research and Development Related Party Transaction [Domain] Related Party Transaction [Domain] Long-Lived Tangible Asset Long-Lived Tangible Asset [Domain] Fulfillment Fulfillment [Member] Fulfillment. Number of reportable segment Number of Reportable Segments Net income per share Earnings Per Share [Abstract] Maximum recognition period for miscellaneous one-time fee Maximum Recognition Period For Miscellaneous One Time Fee Maximum recognition period for miscellaneous one-time fee. Sales and marketing Selling and Marketing Expense Income Tax Expense Benefit [Table] Income Tax Expense Benefit [Table] Income Tax Expense Benefit [Table] Foreign currency translation adjustments Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax Common stock, $0.001 par value; 110,000,000 shares authorized; 38,971,146 and 38,309,144 shares issued; and 36,820,048 and 36,158,046 shares outstanding, respectively Common Stock, Value, Issued General and administrative General and Administrative Expense Organization, Consolidation and Presentation of Financial Statements [Abstract] Organization, Consolidation and Presentation of Financial Statements [Abstract] Awards Close in Time to MNPI Disclosures, Table Awards Close in Time to MNPI Disclosures [Table Text Block] State Current State and Local Tax Expense (Benefit) Segment Information Segment Reporting, Policy [Policy Text Block] Total current assets Assets, Current Investment income Investment Income, Net Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States Schedule Of Percentage Of Property And Equipment Net Table [Table Text Block] Schedule of percentage of property and equipment net. Deferred Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract] Deferred Revenue Arrangement [Roll Forward] Deferred Revenue Arrangement [Roll Forward] Deferred Revenue Arrangement Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes Schedules of Concentration of Risk, by Risk Factor [Table Text Block] Revenue from Contract with Customer [Abstract] Revenue from Contract with Customer [Abstract] All Individuals All Individuals [Member] Supplemental Cash Flow Information [Abstract] Supplemental Cash Flow Information [Abstract] Other expense, net Other Nonoperating Income (Expense) Other Other [Member] Other. Entity Filer Category Entity Filer Category Total remaining purchase commitments Purchase Obligation Class of Treasury Stock Class of Treasury Stock [Table Text Block] Non-PEO NEO Average Total Compensation Amount Non-PEO NEO Average Total Compensation Amount Statement [Table] Statement [Table] Current Fiscal Year End Date Current Fiscal Year End Date Net Income Per Share Earnings Per Share, Policy [Policy Text Block] Share Value Authorized for Repurchase Stock Repurchase Program, Authorized Amount Goodwill and Intangible Assets, Net Goodwill and Intangible Assets Disclosure [Text Block] Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income Schedule of Effective Income Tax Rate Reconciliation [Table Text Block] Income Tax Authority Income Tax Authority [Axis] PEO Name PEO Name Concentration risk, percentage Concentration Risk, Percentage Current Current Income Tax Expense (Benefit), Continuing Operations [Abstract] Preferred stock, shares authorized (in shares) Preferred Stock, Shares Authorized U.S. state income taxes, net of federal tax effect Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Percent Granted (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value 2028 Finite-Lived Intangible Asset, Expected Amortization, Year Five Operating leases Increase Decrease In Operating Leases Increase decrease in operating leases. Schedule of Activity in Goodwill Schedule of Goodwill [Table Text Block] Preferred stock, shares outstanding (in shares) Preferred Stock, Shares Outstanding Other Income and Expense Other Nonoperating Income and Expense [Text Block] Accounts Receivable Accounts Receivable [Policy Text Block] Income Tax Expense Benefit [Line Items] Income Tax Expense Benefit [Line Items] Income Tax Expense Benefit [Line Items] Stock-based compensation expense Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-Based Compensation Cost Net cash provided by operating activities Net Cash Provided by (Used in) Operating Activities Estimated Annual Amortization Expense Related to Intangible Assets Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block] Erroneously Awarded Compensation Recovery Erroneously Awarded Compensation Recovery [Table] Tax impact of stock activity Effective Income Tax Rate Reconciliation Tax Benefits For Excess Tax Deduction From Stock Activity Effective income tax rate reconciliation tax benefits for excess tax deduction from stock activity. Purchases of investments Payments to Acquire Other Investments Deferred costs Deferred Costs, Current Other assets and liabilities Increase (Decrease) in Other Operating Assets and Liabilities, Net Depreciation and amortization of property and equipment Depreciation and amortization expense Depreciation, Depletion and Amortization Balance, beginning of year Balance, end of year Deferred Costs Award Timing, How MNPI Considered Award Timing, How MNPI Considered [Text Block] Accrued compensation Increase (Decrease) in Employee Related Liabilities Statement of Financial Position [Abstract] Statement of Financial Position [Abstract] Business Combination and Asset Acquisition [Abstract] Total stockholders’ equity Beginning balance Ending balance Equity, Attributable to Parent Commercial paper Commercial Paper [Member] Office equipment and furniture Office Equipment And Furniture [Member] Office equipment and furniture. Schedule Of Finite Lived Intangible Assets [Table] Schedule of Finite-Lived Intangible Assets [Table] Unrealized Gains (Losses), net Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain (Loss), before Tax Less: valuation allowance Deferred Tax Assets, Valuation Allowance RSAs Restricted Stock [Member] Schedule Of Share Based Compensation Arrangements By Share Based Payment Award [Table] Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table] ESPP Employee Stock Purchase Plan [Member] Employee stock purchase plan. Deferred revenue Contract with Customer, Liability, Revenue Recognized Finite-Lived Intangible Assets, Major Class Name Finite-Lived Intangible Assets, Major Class Name [Domain] Concentration Risk Type Concentration Risk Type [Axis] Life (in years) Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term Income before income taxes Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest Deferred income tax liabilities, net Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Deferred Tax Liabilities Geographic Distribution Geographic Distribution [Axis] Long-Lived Tangible Asset Long-Lived Tangible Asset [Axis] Preferred stock, shares issued (in shares) Preferred Stock, Shares Issued Invoiced set-up fees Deferred Revenue Invoiced Set Up Fees Deferred revenue Invoiced set up fees. Entity Emerging Growth Company Entity Emerging Growth Company Business Description Business Description Policy [Policy Text Block] Business description policy. Gross deferred income tax assets Deferred Tax Assets, Gross Contingent consideration related to acquisition Noncash Or Part Noncash Acquisition, Contingent Consideration Liability Noncash Or Part Noncash Acquisition, Contingent Consideration Liability Total fair value of assets and liabilities acquired Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Net Increase (Decrease) in Stockholders' Equity [Roll Forward] Increase (Decrease) in Stockholders' Equity [Roll Forward] Named Executive Officers, Footnote Named Executive Officers, Footnote [Text Block] Deferred Costs [Roll Forward] Deferred Costs [Roll Forward] Deferred Costs Foreign Currency Translation Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss Finite lived intangible assets accumulated foreign currency translation gain (loss). Document Fiscal Period Focus Document Fiscal Period Focus Schedule Of Accounting Policies [Table] Schedule Of Accounting Policies [Table] Schedule Of Accounting Policies [Table] 2024 Lessee, Operating Lease, Liability, to be Paid, Year One Estimated useful lives of intangible assets Finite-Lived Intangible Asset, Useful Life Pay vs Performance Disclosure, Table Pay vs Performance [Table Text Block] 2027 Lessee, Operating Lease, Liability, to be Paid, Year Four Title Trading Arrangement, Individual Title Beginning Balance (in dollars per share) Ending Balance (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price Stock-based compensation Share-Based Payment Arrangement, Noncash Expense Common Stock Common Stock [Member] Foreign Tax Authority Foreign Tax Authority [Member] Individual: Individual [Axis] City Area Code City Area Code Entity Address, Postal Zip Code Entity Address, Postal Zip Code Product and Service Product and Service [Axis] Net Income Per Share Earnings Per Share [Text Block] Income Statement Location Income Statement Location [Domain] Document Fiscal Year Focus Document Fiscal Year Focus Common stock reserved for future issuance (in shares) Deferred Compensation Arrangement with Individual, Common Stock Reserved for Future Issuance One-time revenues One Time Revenues [Member] One time revenues. Minimum Minimum [Member] Weighted average common shares used to compute net income per share Weighted Average Number of Shares Outstanding, Diluted [Abstract] Property and equipment, net Total property and equipment, net Property, Plant and Equipment, Net Share Repurchase Program Share Repurchase Program [Domain] Receivables [Abstract] Receivables [Abstract] Stock Option Activity Share-Based Payment Arrangement, Option, Activity [Table Text Block] Exercise Price Award Exercise Price Finite-Lived Intangible Assets by Major Class Finite-Lived Intangible Assets by Major Class [Axis] Statement of Cash Flows [Abstract] Statement of Cash Flows [Abstract] ASSETS Assets [Abstract] Award Timing MNPI Disclosure Award Timing MNPI Disclosure [Text Block] Goodwill and Intangible Assets Disclosure [Abstract] Goodwill and Intangible Assets Disclosure [Abstract] Realized gain (loss) from foreign currency on cash and investments held Gain (Loss), Foreign Currency Transaction, before Tax Deferred income tax assets Deferred Tax Assets, Net [Abstract] Other deferred income tax assets Deferred Tax Assets, Other Cash paid for income taxes Income Taxes Paid, Net Net cash provided by (used in) financing activities Net Cash Provided by (Used in) Financing Activities Deferred income tax assets Deferred Income Tax Assets, Net Commitments and Contingencies Commitments and Contingencies Disclosure [Text Block] Developed technology Developed Technology Rights [Member] Retained Earnings Retained Earnings [Member] Stock-Based Compensation Expense Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block] Adjustment to Non-PEO NEO Compensation Footnote Adjustment to Non-PEO NEO Compensation Footnote [Text Block] Property and Equipment Property, Plant and Equipment [Member] Total liabilities and stockholders’ equity Liabilities and Equity Amortized Cost Debt Securities, Available-for-Sale, Amortized Cost Other assets, non-current Other Assets, Noncurrent Peer Group Total Shareholder Return Amount Peer Group Total Shareholder Return Amount Risk-free interest rate Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate Weighted Average Remaining Amortization Period Finite-Lived Intangible Assets, Remaining Amortization Period Basic (in dollars per share) Earnings Per Share, Basic Operating lease right-of-use assets Operating Lease, Right-of-Use Asset Deferred Costs Deferred Costs Disclosure [Text Block] Deferred costs. Employee stock purchase plan activity Stock Issued During Period, Value, Employee Stock Purchase Plan Allowance for Credit Losses Allowance for Credit Losses [Text Block] Equity Valuation Assumption Difference, Footnote Equity Valuation Assumption Difference, Footnote [Text Block] Sale of Stock Sale of Stock [Domain] Erroneous Compensation Analysis Erroneous Compensation Analysis [Text Block] Foreign Current Foreign Tax Expense (Benefit) Intrinsic value of options exercised Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period, Intrinsic Value Arrangement Duration Trading Arrangement Duration Contract term maximum Contract Term Maximum Contract Term Maximum Entity Address, City or Town Entity Address, City or Town Award Timing MNPI Considered Award Timing MNPI Considered [Flag] 2025 Purchase Obligation, to be Paid, Year Two 2026 Purchase Obligation, to be Paid, Year Three Document Transition Report Document Transition Report Award Timing Predetermined Award Timing Predetermined [Flag] Adjustments, goodwill Remeasurement from provisional purchase accounting amount Goodwill, Purchase Accounting Adjustments Schedule Of Business Acquisitions By Acquisition [Table] Schedule of Business Acquisitions, by Acquisition [Table] Fair Value Measurements Fair Value of Financial Instruments, Policy [Policy Text Block] Share Value Available for Future Repurchase Stock Repurchase Program, Remaining Authorized Repurchase Amount Developed technology Developed technology Technology-Based Intangible Assets [Member] Termination Date Trading Arrangement Termination Date Accounts payable Increase (Decrease) in Accounts Payable Common stock, shares authorized (in shares) Common Stock, Shares Authorized Domestic revenue Geographic Distribution, Domestic [Member] Fair Value Debt Securities, Available-for-Sale Deferred commission expected amortization period Deferred Commission Expected Amortization Period Deferred commission expected amortization period. Entity Public Float Entity Public Float Property, Plant and Equipment [Abstract] Property, Plant and Equipment [Abstract] Reconciliation of net income to net cash provided by operating activities Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract] Related Party Transactions [Abstract] Related Party Transactions [Abstract] All Trading Arrangements All Trading Arrangements [Member] Internally developed software Internally Developed Software [Member] Internally developed software. Finite-Lived and Indefinite-Lived Intangible Assets Acquired as Part of Business Combination Finite-Lived and Indefinite-Lived Intangible Assets Acquired as Part of Business Combination [Table Text Block] All Adjustments to Compensation All Adjustments to Compensation [Member] Award Timing Disclosures [Line Items] Compensation Amount Outstanding Recovery Compensation Amount Assets acquired Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Assets 2019 Program Two Thousand And Nineteen Stock Repurchase Program [Member] Two thousand and nineteen stock repurchase program. Provision for credit losses Accounts Receivable, Credit Loss Expense (Reversal) Other liabilities Other Liabilities, Noncurrent [Abstract] Other comprehensive income (expense) Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent [Abstract] Forfeited (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value Deferred income taxes Deferred Income Tax Expense (Benefit) Net proceeds from exercise of options to purchase common stock Proceeds from Stock Options Exercised Adjustment, total fair value of assets and liabilities acquired Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Fair Value Of Assets And Liabilities Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Fair Value Of Assets And Liabilities Foreign Geographic Distribution, Foreign [Member] Schedule Of Employee Service Share Based Compensation Allocation Of Recognized Period Costs [Table] Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table] Forfeited (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price Income Taxes Income Tax, Policy [Policy Text Block] Document Financial Statement Error Correction Document Financial Statement Error Correction [Flag] 2026 Finite-Lived Intangible Asset, Expected Amortization, Year Three Forfeited (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period Maximum annual contribution per employee, percent Defined Contribution Plan, Employer Matching Contribution, Percent of Employees' Gross Pay Insider Trading Arrangements [Line Items] Intrinsic value of options outstanding Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value Shares issued pursuant to stock awards (in shares) Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture Recurring Revenues Recurring Revenues [Member] Recurring revenues. Schedule of Supplemental Balance Sheet Information Related to Leases Schedule Of Supplemental Balance Sheet Information Related To Leases [Table Text Block] Schedule of supplemental balance sheet information related to leases. Entity Registrant Name Entity Registrant Name Material Terms of Trading Arrangement Material Terms of Trading Arrangement [Text Block] Award Timing Method Award Timing Method [Text Block] Options to purchase common stock and ESPP (in shares) Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements 2025 Finite-Lived Intangible Asset, Expected Amortization, Year Two Adjustment to Compensation, Amount Adjustment to Compensation Amount Cost of revenues Cost of Sales [Member] Documents Incorporated by Reference Documents Incorporated by Reference [Text Block] Auditor Name Auditor Name Document Period End Date Document Period End Date Compensation Actually Paid vs. Net Income Compensation Actually Paid vs. Net Income [Text Block] Deferred revenue Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue Adoption Date Trading Arrangement Adoption Date Peer Group Issuers, Footnote Peer Group Issuers, Footnote [Text Block] Less: accumulated depreciation and amortization Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment Weighted average exercise price (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price Treasury Stock Treasury Stock, Common [Member] Entity Central Index Key Entity Central Index Key Stock-based compensation expense Share-Based Payment Arrangement, Expense Non-Rule 10b5-1 Arrangement Terminated Non-Rule 10b5-1 Arrangement Terminated [Flag] Gross Carrying Amount Finite-Lived Intangible Assets, Gross Income tax expense Total provision for income taxes Income Tax Expense (Benefit) PSUs, RSUs, RSAs, and DSUs (n shares) Incremental Common Shares Attributable to Dilutive Effect of Contingently Issuable Shares Write-offs, net of recoveries Accounts Receivable, Allowance for Credit Loss, Writeoff Accounts receivable Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Receivables Income Tax Authority Income Tax Authority [Domain] Accrued compensation Employee-related Liabilities, Current Number of operating segment Number of Operating Segments Revenue Benchmark Revenue Benchmark [Member] Adjustment, other assets Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Other Assets Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Other Assets Name Trading Arrangement, Individual Name Total other comprehensive income (expense) Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent Summary of Revenues by Revenue Stream Disaggregation of Revenue [Table Text Block] Schedule of Supplemental Cash Flow Information Related to Leases Schedule Of Supplemental Cash Flow Information Related To Leases [Table Text Block] Schedule of supplemental cash flow information related to leases. Deferred Costs [Abstract] Deferred Costs [Abstract] Set up fees recognized period Set Up Fees Recognized Period Set up fees recognized period. Income Before Income Tax Income Before Income Tax [Member] Income Before Income Tax Equity [Abstract] Equity [Abstract] Schedule of Financial Instruments [Line Items] Debt Securities, Available-for-Sale [Line Items] Reclassification of (gain) loss on investments into earnings, net of tax of $(564), $(55), and $63, respectively Reclassification of gain (loss) on investments into earnings, net of tax Other Comprehensive Income (Loss), Reclassification Adjustment from AOCI for Sale of Securities, Net of Tax Weighted-average remaining lease term Operating Lease, Weighted Average Remaining Lease Term Revenues Revenue from Contract with Customer, Excluding Assessed Tax Compensation Actually Paid vs. Company Selected Measure Compensation Actually Paid vs. Company Selected Measure [Text Block] Amendment Flag Amendment Flag Money market funds Money Market Funds [Member] Revenue Recognition [Line Items] Revenue Recognition [Line Items] Revenue recognition. Nondeductible compensation Effective Income Tax Rate Reconciliation Nondeductible Expense For Compensation Effective income tax rate reconciliation nondeductible expense for compensation. Fair Value Estimation of Common Stock, Assumptions Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block] Right-of-use assets Deferred Tax Liabilities Right Of Use Assets Deferred tax liabilities right of use assets. Cash and cash equivalents Cash and Cash Equivalents, at Carrying Value Acquisition of business, net Payments to Acquire Businesses, Net of Cash Acquired Weighted-average discount rate Operating Lease, Weighted Average Discount Rate, Percent Shares issued (in shares) (less than) Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Issued in Period Schedule Of Stockholders Equity [Line Items] Schedule Of Stockholders Equity [Line Items] Schedule of stockholders equity. Repurchases of common stock (in shares) Number of shares repurchased (in shares) Treasury Stock, Shares, Acquired Business Combinations Business Combinations Policy [Policy Text Block] Estimated useful lives of property and equipment Property, Plant and Equipment, Useful Life Compensation Actually Paid vs. Other Measure Compensation Actually Paid vs. Other Measure [Text Block] Leasehold improvements Leasehold Improvements [Member] Net deferred income tax liabilities Deferred Tax Liabilities, Net Sales and marketing Selling and Marketing Expense [Member] Diluted (in shares) Weighted average common shares outstanding, diluted (in shares) Weighted Average Number of Shares Outstanding, Diluted Adjustment, deferred income tax liabilities, net Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities Forgone Recovery, Explanation of Impracticability Forgone Recovery, Explanation of Impracticability [Text Block] Schedule of Total Contribution to the Plan Defined Contribution Plan Disclosures [Table Text Block] 2022 Program 2022 Stock Repurchase Program [Member] 2022 Stock Repurchase Program Intangible assets Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Intangible Assets, Other than Goodwill Summary of Deferred Revenue Liability Relating to Set-Up Fees Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block] Income Tax Authority, Name Income Tax Authority, Name [Axis] Marketable securities: Marketable Securities [Member] Marketable Securities Operating expenses Operating Expenses [Abstract] Revenue Revenue from Contract with Customer [Text Block] Contract with Customer, Duration Contract with Customer, Duration [Domain] Purchases of property and equipment Payments to Acquire Property, Plant, and Equipment Company Selected Measure Amount Company Selected Measure Amount Additional paid-in capital Additional Paid in Capital, Common Stock Additional Paid-in Capital Additional Paid-in Capital [Member] Document Annual Report Document Annual Report Balance Sheet Location [Axis] Balance Sheet Location [Axis] Cash and cash equivalents at beginning of period Cash and cash equivalents at end of period Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations Total assets Assets Name Awards Close in Time to MNPI Disclosures, Individual Name Share Repurchase Program Share Repurchase Program [Axis] Cover [Abstract] Cover [Abstract] Stock-based compensation APIC, Share-Based Payment Arrangement, Increase for Cost Recognition Adjustment, accounts receivable Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Accounts Receivable Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Accounts Receivable Summary of Deferred Costs Activity Deferred Costs And Amortization [Table Text Block] Deferred costs and amortization. Deferred costs Increase (Decrease) in Deferred Charges Other liabilities, non-current Other Liabilities, Noncurrent Vested and common stock issued (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value Non-NEOs Non-NEOs [Member] Total future gross payments Lessee, Operating Lease, Liability, to be Paid Short-term investments Short-Term Investments Current liabilities Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities Total operating expenses Operating Expenses Net increase (decrease) in cash and cash equivalents Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect Income Tax Authority, Name Income Tax Authority, Name [Domain] Cash flows from financing activities Net Cash Provided by (Used in) Financing Activities [Abstract] Non-PEO NEO Non-PEO NEO [Member] Lease extension period Lessee, Operating Lease, Renewal Term Equity Component Equity Component [Domain] Adjustment to Compensation: Adjustment to Compensation [Axis] Purchase price as a percentage of fair market value Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent State and Local Jurisdiction State and Local Jurisdiction [Member] Non-GAAP Measure Description Non-GAAP Measure Description [Text Block] Other deferred income tax liabilities Deferred Tax Liabilities, Other Basic (in shares) Weighted average common shares outstanding, basic (in shares) Weighted Average Number of Shares Outstanding, Basic Entity Current Reporting Status Entity Current Reporting Status Concentration Risk Type Concentration Risk Type [Domain] Income from operations Operating Income (Loss) Concentration Risk Benchmark Concentration Risk Benchmark [Axis] Total deferred income tax liabilities Deferred Tax Liabilities, Gross Cost of revenues Cost of Revenue DSUs Deferred Stock Units [Member] Deferred Stock Units Incurred deferred costs Deferred Costs Incurred Deferred costs incurred. Related Party Transaction [Axis] Related Party Transaction [Axis] Collaborative Arrangement and Arrangement Other than Collaborative [Line Items] Collaborative Arrangement and Arrangement Other than Collaborative [Line Items] Pay vs Performance Disclosure Pay vs Performance Disclosure [Table] Statement [Line Items] Statement [Line Items] Amounts for shares purchased Share Based Compensation Arrangement By Share Based Payment Award Value Purchased For Award Share-based compensation arrangement by share-based payment award value purchased for award. Property and Equipment Property, Plant and Equipment, Policy [Policy Text Block] Initial allowance for business combination acquired receivables Accounts Receivable, Allowance for Credit Loss, Period Increase (Decrease) Forgone Recovery due to Disqualification of Tax Benefits, Amount Forgone Recovery due to Disqualification of Tax Benefits, Amount Adjustment, current liabilities Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Current Liabilities Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Current Liabilities Awards Close in Time to MNPI Disclosures Awards Close in Time to MNPI Disclosures [Table] Subscriber relationships Customer Relationships [Member] EX-101.PRE 13 spsc-20231231_pre.xml XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT GRAPHIC 14 spsc-20231231_g1.jpg begin 644 spsc-20231231_g1.jpg M_]C_X 02D9)1@ ! 0$ 8 !@ #_VP!# @&!@<&!0@'!P<)"0@*#!0-# L+ M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7& MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$ P$! 0$! M 0$! 0 $" P0%!@<("0H+_\0 M1$ @$"! 0#! <%! 0 0)W $" M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$ MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4 MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,! (1 Q$ /P#W^BBD) &3 MP!0 M9>J:]IFC)F]NDC;&1&.7/X#FN8UGQ?=7U]_9'AM/-G8E6N!R!Z[>V!_ M>-7M$\$6MF_VS4V^W7S?,QD^9%/MGK]376L/&G'FKNWEU_X!Y[Q Q"5^7\CECF^#D[<_P"#.\HJ MI8ZA::E;BXLYTFC/=3T^H[?C5NN1IIV9Z,9*2NG=!1112&%>>^-/$,]S=KX? MTK+2.P28IU8G^ ?U_+UKJ?$NK#1-#N+H?ZTC9$/5ST_+K^%IY6/JSJU(X2F[.6[[+_ ()U'AGPY!X? MT\)P]W( 9I?4^@]A4FN>)=/T"/\ TF0O,PRD* *\KT72KOQ=KDIGN"/^6D\IY('H!_*G0H^WW]!6#<>(]=U1O+>_N7W?\LXOE!_!<5Z/ M9> M"L\%X)+EAWF%AK.\OZ\CDH/AWH<:;9!<2M_>:0C^6*S=3^&L#(7 MTNZ>.0=(I_F4_CU'ZUW]%81QN(B[\QU3RS"2CR\B/#K:ZU7PKK!PK07"$"2) MONN/?U'O7KNAZS;ZYIJ7=O\ *?NR1D\HW<&J'BWP['KNFL8T O806A;H3_LG MV/\ .O/O!NLMH^O(DC%;>X(BF4\!3G@_@?TS7=-1QM%U(JTX_P!?\,>52<\L MQ*I2=Z>)E M[]KC*]5]';^ON.5\?V5Q>>&\VZL_D2B5U7DE0"#^6-X=TZ4S78TZ&7KEE0/G^=&$QGLX>R<>8>89;[6JJ\:G*>.3 MWM_,XFN+FY=FY5G=LGW%=-I7C^^T[3OLTT7VR13^[DD?!5?0]S^=+XV\366L MK!9V W10L7,Q7&3C&!WQ7/:'9)J.N65I(I,,]Q3;!IUNO&"63<3^)R:\G\5V]I:>)KR"R4+"C#Y5 MZ*V!D#\:Y\-5P]=NG&%D=F-H8S"Q5:=6[OW9['87D6H6$%Y#_JYD#@'MGM5J MO+K'QXNDZ):6%I9&62&,!I)6P,]3P.?U%9E[XYUV[R!="W0]H%VG\^3^M<*R MVM*3MHO,]-YWAX05]96UMW/8BP& 2 3T]Z\<\;:<-.\33^6NV.X F7'&">OZ M@UN>!M(U&[U0:SJ!F,4:GRFF))D8\9&>P&>?>I?B?;C_ (EUR.OSQG]"/ZUK MA(JABO9IWNM3#'S>+P#K./+9Z>FQV'AZ^.H^'[&Z9LN\0#GU8<']1161\/7+ M^%(U/\$KJ/SS_6BO/Q$%&K**[GL82I[2A";W:1P'B=C;^,[US_!G]?<>3EK=/%UZ+W;O^/\ P3SO6O%6J:W?.EK+-%;9 M(CA@)!(]3CDDU#9>#M=O_G6R>)3SON"$_0\_I7K]K8VEC'LM+:&!1QB- M6J M7]I6C!(K^Q75ESXBHY/R/,KCP3#H?AZ^U#4)Q/%K^TTO7X;V]8B&)7(VJ222,#^=>@_$2;RO"QC''FSHG\S_ $K@?#OAFY\1 M2S+#+'"D.-[L">O8?E79AJOM,/*==Z/\CSL;05'&0I86.J2?J]]3I-6^))DA M>+2K5XV;($TV,K]%&?U-<%EYI>'NX4/^',_1=/T/0=,^ M'%E'#')J4TLLQ&6C1MJ ^GJ?SKI[/P_I.GX-KI]NC#HQ3+?F>:\>N-;UB_3; M-?W4J(.0&( 'OC^M7O"^O7NF:Q;()Y'MI9%CDB9B00>,CW%<];"8F<7*52_E MT.S#9C@ZSUP7Q.8#3]/7N96/X8_^O7>UY?\2KOS=6M;-.?) MB+$#U8_X"N'+XN6(CY'JYQ-1P?/5E)=6=F$@Z="$'T2,;QYHYU/0O/B7,]F3( M.I3^(?R/X5R/@37UTO46LKEPMK=$88\!'['Z'I^5>L$9X->3^,O"CZ5.]_91 MDV$ARP _U)ST_P!WT->A@JL*E-X:IUV/(S.A4HU8XVBM5O\ U^#/6:*\N\-^ M/9+")+/5%>>!>$F7EU'H?4?K]:[>#Q7H,\>]-4MU'H[;#^1KEK8.M2E9JZ[G MH8;,71+6WW'HU4;^'370/J,=J57HUP%P/Q->37GC77KU ML?;3 I_A@4)^O7]:J0Z-KFL/YB6MW<$_\M),X_[Z:KAELH^]4FE_7R,ZF=PJ M>Y2IN7]?,]"U/Q=H.E6,L-AY,TK*56*! $S[GIBN-\$Z-)J>O0SE/]&M&$LC M8XS_ C\_P!*T=,^'&H3.&U&>.VC[K&=[G^@_6O1-.TZUTJS2TLXA'"GYL?4 M^IISK46,=D3W$\5K;23S.$BC4NS'L!7EF@6\GB MOQK)?S!O(CD\]P>P'W%_0?D:T_&>O2:K=IX>TG,I9PLQ3^-L_=^@ZD_X&NL\ M-Z'%H&E):J0TS_/,_P#>;_ =!64/]FH.3^*6WDC>K_MV)4(_!#5^;[&U1117 MG'LA4;(KH490RL,$$9!J2B@#B-8^'5E=N9M.E^QN>3&1N0G^8KFY?AWKB/A/ MLT@_O"3'\Q7K=%=M/,*\%:]_4\NMD^%JRYK6]#R^U^&FHR;3=7EO .X0%S_0 M5OV?PYT> W#W%RW^TVT?D/\:[&BE/'XB?VK>A5+*<)3^Q?UU_X!G6>B:9I_ M_'I86\1'\00;OS/-:-9^IWL]A;K);V$]Z[-MV1$ CCJ<]JQ)+_Q=>Y6UTFVL M%/1[B8.1^ _PK&-.=3WF_O?],Z)5:='W(Q?HD_\ ACI+BX@M86FN)4BB7J[M M@"N%U;Q3>Z_.VD^&HI&#<27(!''M_='N:OKX)GU"83^(-6FO&!R(H_E0?Y]@ M*Z>RT^TTZW$%G;QP1C^%!C/U]?QK:+HT=5[TOP_X)A..)Q/NOW(_^3/]$8WA MCPI;^'X/,7'"CT7V_G6A?Z3'?3>8VP$Q^63MYQN!Z]>@(_&M2BL)5 MIRGSMZG5##4H4U2BM"C8V8L$E02M())#)N=OFY SG\J*O45FW=W9M&*BK(** =**0PHHHH **** "BBB@ HHHH **** "BBB@#_]D! end GRAPHIC 15 spsc-20231231_g2.jpg begin 644 spsc-20231231_g2.jpg M_]C_X 02D9)1@ ! 0$ 8 !@ #_VP!# ," @," @,# P,$ P,$!0@%!00$ M!0H'!P8(# H,# L*"PL-#A(0#0X1#@L+$!80$1,4%145# \7&!84&!(4%13_ MVP!# 0,$! 4$!0D%!0D4#0L-%!04%!04%!04%!04%!04%!04%!04%!04%!04 M%!04%!04%!04%!04%!04%!04%!04%!3_P 1" !D &0# 2( A$! Q$!_\0 M'P 04! 0$! 0$ $" P0%!@<("0H+_\0 M1 @$# P($ P4% M! 0 %] 0(# 01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D* M%A<8&1HE)B7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7& MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$ P$! 0$! M 0$! 0 $" P0%!@<("0H+_\0 M1$ @$"! 0#! <%! 0 0)W $" M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$ MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4 MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,! (1 Q$ /P#]4Z**C9EC MCW$[56@"2N*\>?%SPG\,[??KVKPVDVW1N!V[&ND^%_[+>C^&[C^W/%LG_"5 M>)I3YDLEV3)!&_7@-RY_VF_(5]#'+:6%IJMF,G&^J@OB?K_*O7[CXZ6=5\PK M2PV3P4^72527P)]E;6;]-/,AL_VA/%GCS_D0OAW?7MFWW-2UB46\'U]#^#D^ MU=?X3C^+<^IV<_B*X\*V>F[MT]M9Q3R3[/[H8L%!]^1[&O2D5(HPBC:B\*JU M-7'5QE*SA0H1BO.\G][_ $2/2H9;B$U4Q6*G-KHK1C]R5_O;"BN<\1>//#?A M",MK6N:?IFW^"XN%5C]%SD_@*\J\2?MC^ -$5TT^2^UZ9?N_9+,7V;5_NW/>**^/]0_;NO3:4C?\O-I*+A%]RN%;'TR?:O4GP[F< M(<[I?159^S6(MZJ27WM6^\^H**PO"OC#1O&VEIJ6AZC!J5FW1 MX7^Z?1AU4^Q&:W:^=E&4).,U9H^RIU(58J=-II[-:IA1114F@5\G_M.?&34- M;UR+X:>#]\UU/(L%_);?>E=N!;*>PY^<_AP U>W?&_XAI\+_ (@'<\GKQ:^*GQP\,_".TSJUPU MSJ,J[X--M@&F<>IZ!5SW8_3/2M'XN>/X/A?X!U3Q!(BSS0*$MH6/$DS':@^F M3DXYP#7P]\,/A_K7[17Q&O'U#4W7_E\U&^?YF522TV]$<^;YI_84:&39-23K27NKI%=WW;U>OFWY^@>)OVW MO$M]YD>A:)8Z0G19;AC.Y/LT_B/5+DR?\NEA^Y#> MVV(#/ZU]?>%_V1_AWX_AW]G/XC^*I/-B\-W-LDGS?:-2<0?B=Y#'\ :]8\-_L,ZI.$?7O$MK:#&6 MAL(#*WTW-M'Z&OL:BN#$<5YA5TI6@O)7?XW_ "/8PG &44-:_-4?F[+[E;\S MP;2_V-/A[96_EW2:EJ$W_/6:[*?D$ _6N0\=?L1:?/;R3^$=8FL[I?NV>I' MS(F]@X 9?J0U?5%%>53SW,J<^=5F_75?<>]6X5R6O2]D\-%+NM']ZU^\_-'0 M]>\8_ 'QV^V.72=4MV5;FQFYAN4ZX8 X93U# \=00:^^/A7\2],^*OA&VUG3 M?W+_ .KNK1V^>WE'5#ZCG(/<$'CH.8_:&^#-M\5O",KVT*+XCT]6EL9NC2=S M"Q[JW;T.#ZY^4?V:?B7+\-OB9;P74CQ:5JCK8WT+_*L;%L1R$=BK'!] 6KZO M$1H\28"6*IQM7I[KO_P_3[C\_P '/$<%YK' UI\V%K?"W]E_YIVYNZU\C]"Z M***_-C]L/C+]N+Q<]UXFT3PW%)^YLK9KR5/[TKDJN?HJ''^\:^F/@[X53P9\ M,?#>D*FQX;-&E'_35QOD_P#'F-?%?[05U_PD'[16KP2?ZM;ZUL_^ A(U/ZDU M^@ZJ%&!7VV+4%Z)M?\ MJ/#?VOO M"^I>)/A(7TV.2X_LZ\2\GAB!+-$$=2<#KC>&^@)[5\2>%_&VL^![J2[T'5[C M2[B6/RI7MWV[EZX/4=>1W':OU/KSKQ)/?:RGAG3+X?/OFB@6#G0]HF]+?DU9CXEX7^OXR.94\5[%I)-O2UNJ=U;T_$_/?5 MO$_B/4KB.^U/5-5N9I/FBFN;B3Y MMI4)&" P7!))(&>,#C)\H^%7AB#QI\1O#FB7,;O:7MVBSJK[6:(;: 2R-]7?+?K M7PI^T#H^B^'?B]K^GZ!&L&G02I^YA_U<_S/H\^R_/,BI4\?7QSE)RM92EH[-Z7T:TUT1^@_A'Q):>, M?#.EZW9<6U_;I<(K]5W#.T^X/'X5N5\3^%OVM(?AY\/-#\.:)H#W]W8VRQR7 M=_+LCWDEFPBY) )P"2,UQGB?]JKXB^(O,1-831X&_@TV$1-_WT/"N M-JU9E_LJ?#KQ1X MA\9IXZ\2O?/9VD3BSFU)W9[F5P5++N.=H4M\W0D@#.#BY^W9HZ+_ ,(CJJC# MYN+5_IA&7_V;\Z[\GIQRO.%A85.?FBT[;)[VW>UOQL>5Q%6GGW#DLPJ4?9N$ MDXIZMQTC?96O?;R3/H#X.^*V\9?##PWJ\D@DN)[-%G<_Q2I\CG\64FBN#_8Z MNGN/@I:1L>+>]N(U^F_=_P"S45\=F-"-#&5J<5HI.WI<_2O/>4( MM^ME<^5?CI,VC_'[Q'<-_P L=32?]$8?I7Z(+?6[:?\ ;-_^C>5YN_\ V,9S M^5?#'[97AMM'^+QU';MAU:TCG5OX=Z#RV'UPJG\:^H?V??$UMX]^#.AO+^^> M&V_LZ[1Q_%&-A!^JX;Z-7UV>16(RS!XI;)6?S2_5,_.^%9O"9WF6 E\4I.2^ M3?Z23/D?XG?M >+_ (H>)+F#2+R^L-(W%;;3M-=U9TSPTFSYF9NI!X&< =S0 M\,_LU_$3Q:1-'H$UA$WS?:-598.O?#?,?R-??V@>$]%\*VOD:-I=GI<2C&RS M@6/\\#G\:VZR_P!:%AJ:HX"@H)=]?RMK\V;_ .HKQU9XC-L5*I)]%HEY*]]/ M1(^,-8_9>LOA9\+/$GB3Q+J":MJ\-HR6UO#E;:&5R$5\G#.P+9&0 #V/!KRC MX!^+-%\!_$[3]>UZ1TL+.*9E\F(R,SF,JH '^\>3@>]?5O[9FI?8/@P]LIV_ M;=0@@/T&Z3_VF*^6?@S\#M4^,]Y?QV-Y;:=;:?L\^YF4M]_.%4#J?D).2*^D MRO%/%Y96Q&8U/=DVF]K*R6GWGQ>>Y>LOSS#8/)J*Y)/7U-?;G@7]C7PGX9N([G6;BX\27$9W"*9!%;9]XU)+?1F(/I7QS MXR\.ZAX)\6:AI6H6[6=_:3M_L_+G*NO^R1@@CC%=61ULLYJE#+ELDVWU^_6R M^2U//XIPN>A]7^!?V*M L]/M+CQ3?WE_J+*'EM+ M:416Z,>J9 W-CIG(SZ"O9_#7P?\ !?@_8^D>&=.MIT^[,T(DE_[^-EOUK\_= M9^*7C?Q=;F*^\1ZQ?VT*_,B2NL:J.[!<#ZEOSKI/@-\6]?\ _CO1X%U"YN= M'O;J.UN;&:4O&RN0N\ DX92<@C&<8[UY&.R7-<12G4JXKF:N^572_KY'T65< M2Y%A*].C0P/+%V7.[.7:^S?K9_(_1.OEW]NJ9$\,>%(_XVO)6_X"(P#_ .A" MOJ*OBK]M[Q%]N\;:'HD'SG3[,RNB?WY7X'UVQ@_C7RG#5)U,SIM=+O\ ^_X MVKJCD=9/>7*E_P"!+]$SV7]D&QDL?@CITC# NKJXG7Z>85_]EHKT'X6^&9/! M?PY\.:*4$2UC M"*?K97_$\[_:S^&K^./AO_:%E'OU+0F:\15^\\./WR#\ &]]F.]>"?LF_%Z+ MP%XJET'5;A8=%UAALF;Y5AN!PK$]E8?*3Z[C=!T/8G[#(<51Q>&GE&+=E+X7Y]O6^ MJ[GYWQ7@,3EV-I\0Y>KRAI-=UM=^5M'VT?<^[:*^)_@I^UM<^$K.WT/Q='-J MFFP_+#J4/S3PKV5P?OJ.QSD#UXQ]):7^T%\.=4MO.A\7Z;$O]VZE\AQ_P%P# M^E?/XW)<;@JCC*FY+HTFTSZ_+.)\LS2DJD*JC+K&32:^_?U1Y5^V=8ZKXDM_ M"'A_1=/N=2N9[F:Y:&VB,GW0J@G'0?O#RKS:O*O_+/3;=I/_'CA?UKR MGQ%^W1<,LB>'_"Z)_=FU*XW?^0T _P#0J]FEA!A@*5!Q@G=MZ7UOUMI] MY\U7QV09?FM3-L1BE.HTDE'WN5))=+ZOS:W/KNN9\7:7X5N8$G\3VNCO#']V M;54BVK]"_2OA/Q-^U!\1_$TFTZ^VE0M_RQTV(0?^/XK$*GZ?YNQPXGCRABFZ&!PDJS[- M?HE*_P"!]7>.OVB_ASX \-WUCX;-CJ5])&T<5CI=N%@W$8R[ !=H[@$G'&*^ M>?V7?AG=>.OB7I^H/;_\2?195O+F;;\OF#F*,>Y8 D>@/MGL/ _[%/B35+A) M?$^H6VB6?\<-FWGW#>V?NK]VBO>W9+J:.LZM::#I-YJ-].MM96L33S3/T5%&2:^(_A'H]U^T!^T-= M^)+Y)/[-MKG^TYT?D*BG%O#Z=E!'<*QKLOVFOBW=>/\ 7(/AGX,WW[RSK'?/ M;_\ +>4'(A!Z;5(W,>F1C( .?=?@G\*[+X1^"[?2(W6;49OW]]YKAH?\(N7RJSTK5E:*ZJ/5_/_ "\SU<7;B;-Z>&IZX;#.\WTE/I%= M[=?GY'HU%%%?&'Z8%5;BUBNH9(98DEBD4JR2+N5@>H(/!!]*M44"WW/FWXD? ML8Z!X@N)+[PM>?\ ".7+?,UFR&2V8^PR&3Z D>PKQ^^_8Q^(5K<;8#I5XG_/ M9+LK^C*#7WE17U&&XDS'#14.?F2_F5_QW/A<;P3DV-J.HZ;@W_*[+[M5]R/B MCP_^P[XHO#&VKZWINE)_$ELKSR?R4?J:]4\-?L6^!])5'U.XU'7)O^FTWDQ_ M]\I@_F37T'16>(XBS+$:.KRKRT_X/XFV$X-R3!ZJ@I/O+WOPV_ Y+PU\+O"7 M@_!T;P[IU@Z])DMU,G_?9RWZUUM"=S%B,+QC@'DUYM=^+?C7XH$D>D>#=*\)PMPMUJ]ZL[K[[4_JIKSJ>&KXS M][4FK=Y27Y-W_ ]BIC,+EO\ L]*E*Z^S"#:^]+E7S9[#K&LV'A_3Y+[4KR'3 M[*$9>>XD"(OXFOF3XA?'S7_B[J$G@WX56=U,LORW6L*AC^0\':3CRD/]YL$] M !U/3P?LNZAXPU"/4/B5XSOO$DRMN6PLR8;9/8>@_P!T(?>O:?#'@_1O!>EI MI^AZ9;Z79K_RRMDV[CZL>K'W.37H4YX#+O?C^^J+;2T$_GK+\$>36I9KG"]E M+_9J+WU3J27;2\8>>K9YY\"OV?M,^#^FFYF=-2\1SKMGO]N%C7_GG$#R%]3U M8]>P'5^+OAY:^*K[[5+Y*NUM]F9_*_>;?-1\AP0P^567@\;L_7M:*\JKCL16 MKO$SG>;ZGNT'PJP=.FE373]?7NSF?"OAI?"-O?0)=R7BW5TUUYMQ)^\) M95!W'N25)SP.<8XHKIJ*Y)R=27-/5GI4J<*,%3@K)!1114&@4444 %%%% !1 1110 4444 %%%% !1110!_]D! end GRAPHIC 16 spsc-20231231_g3.jpg begin 644 spsc-20231231_g3.jpg M_]C_X 02D9)1@ ! @$ 8 !@ #_[@ .061O8F4 90 !_]L 0P " 0$! M 0$" 0$! @(" @($ P(" @(%! 0#! 8%!@8&!08&!@<)" 8'"0<&!@@+" D* M"@H*"@8("PP+"@P)"@H*_]L 0P$" @(" @(% P,%"@<&!PH*"@H*"@H*"@H* M"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*_\ $0@! M] 2P P$B (1 0,1 ?_$ !\ $% 0$! 0$! ! @,$!08'" D* M"__$ +40 (! P,"! ,%!00$ !?0$" P $$042(3%!!A-180'EZ@X2%AH>(B8J2DY25EI>8F9JBHZ2EIJ>H MJ:JRL[2UMK>XN;K"P\3%QL?(R;GZ.GJ\?+S]/7V M]_CY^O_$ !\! ,! 0$! 0$! 0$ ! @,$!08'" D*"__$ +41 (! M @0$ P0'!00$ $"=P ! @,1! 4A,08205$'87$3(C*!"!1"D:&QP0DC,U+P M%6)RT0H6)#3A)?$7&!D:)BH*#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6V MM[BYNL+#Q,7&Q\C)RM+3U-76U]C9VN+CY.7FY^CIZO+S]/7V]_CY^O_: P# M 0 "$0,1 #\ _?RBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *** M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *** M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ MHHHH **** "BBB@ HHJ*^O;;3K*;4+V4)#!$TDKD?=51DG\A0!Y!^T9^V_\ M"C]GKX@^'/@9#HNN>-?B9XPB>;PQ\-?!=M%<:I=6L9VR7LQFEB@LK-#PUS _BGX0O;CS'TNY@6ZNI[-WVK MYB>9!:2JQ525=-RJP*@ _23PM_P4OTRWUSX:R?'[]G7Q9\,?#7QEU&+3OAIX ME\3WEE(ES?SPM/:6%_#;S.^G75S$K-#&^\%D:-VCEQ&W<_M._MH>"OV=/''@ M?X):7X2U/QC\2?B5>W,'@GP+H4L,<]U%;1>;=WL\T[K':VD$>#)*Y))95C21 MR%KY*_X.IU&D_P#!&KQCXRTNY:SU7PQXO\,ZEX?O(&VR6EVFK6\:R1D?=94D M?!'2N'_9J\=^)/CK_P '0/B;7O'R,/\ A#_V-M,_L*S886V>]N],N9G13T.^ M\G0GK@@$\"@#[O\ V:?VR_"'[0/C_P ;? K7?".H>#?B5\.+BU3QCX(UFXAF MEAM[J+S;2^MIX6:.ZM)DW;95PRLC)(D;C;7K]Y>6FGVDM_?W4<$$$;2333.% M2-%&2S$\ DD]*_,_XM^(M0\!?\'7WPMT_PO(T,?CG]E&\L?$T41^6>*#4= M2N(I''N$L["PC+JLTTS'*Y=4"AG9E168?+&E_#KPK8 M_P#!L*G@::TB-@?V)&FFX&/-;PJ9VF'OYI,@/KS7P5^SW\6?'OQZ\>_\$>?A MU\0M0GFTV#0?$.JR)<,2+JYTJW-O8R-G.YHXK1-K=?WS'O0!^O/PM_;BM-;_ M &B+3]DKX^?"/4_AI\0M9\-R>(/">EZGJMK?6GB"PB<)'Q%J'P]_;M_X)[?$CPO(T6M)^TE'H230G#FPU-K M*UO8P1SM>)MI'0CK7Z:4 %%%% !16?XK\5^'/ WAR[\6^+=7AL--L(3+>7DY MPD2=-QQVYJG:>,;K4+6*_P!-\-74]O/&LEO/&R[9$895A[$$&@#3WUJ)[BPDMF+$>5*1GZ\58H **** "BBB@ HHHH *** M* "BBB@ ILL44\303QAT=2KHPR&!Z@TZB@#\\_\ @F/\.?B?_P $A/A_X^_8 M2^(/P,\>^*?">C>-=3USX)>*?!'AF?5H-EZ%\9O&WQ.OOB[8"&Z$MCH7BF2X2: MWL1,H(9%MHH[-Y5!4,\CJ&4+G]3:* /SM_;H^'7QN_X+$?!+X9?L8:S^SAXT M\ :=?>,M'US]H._\6Z2UG9Z/8V&9KC2K*=F*:G//._@#_P53\!_P#!4_X/?#_5/$>@7_PXNOAS\8_#_AFQ-SJ%KIQF6[L- M5MK5/GNQ'<111311!I1$L;1QR;6 ^W:* /B7]FW]EWQ_\=O^"K/C/_@JS\6? M .J^&-$T[X:VGP\^#N@>)+7[/J=Q8BX>[O=6N+8G?9[YY)(H8I=LQC:1I(XR MRBNUT>[\??\ !3_]FKX^_LR?M2_LC^)_A!I%[JNM^!M*NMD_X(]M_P2'D_9Y\2'XQCP,WP ML_X2@Z)I&6-;R:.(3IO8(7#I_ M&*_0FB@#X2^*OP'\:?\ !2?_ (**_ ?X]:C\+O%'A;X2_L[_ -I^(5N?&NA3 M:5>>)/$]TD$=K;P6=R%N$AL_)\Y[AT5'=E2/S!N=?NVBB@ HHHH \H_;G_Y- M'\>_]@%__0UKNOA=_P DS\._]@*T_P#1*5PO[<__ ":/X]_[ +_^AK7=?"[_ M ))GX=_[ 5I_Z)2@#=HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH * M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH * M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** /*/VY_\ MDT?Q[_V 7_\ 0UKNOA=_R3/P[_V K3_T2E<+^W/_ ,FC^/?^P"__ *&M=U\+ MO^29^'?^P%:?^B4H W:*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** " MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ** M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** " MBBB@ HHHH **** "BBB@#Y1_;9_X*M^'_P!COXMVWP4\*_L6_'OXV:XNC1:G MKL?P1^'K:Y%H,4SR);)>NLB"&2;R9F1#DE(]W *Y])\+_MK> H?V,&_;@_:! M\">*?@]X;L]!N-8UW1/B9IBV>K:-;1.Z@7-M&\A260*K)""9#YJ+M#G8/AO] MJ/\ 8^_X+6?L,?%7XH?\% OV&OVR-%^+&F^(_$L_BOQG\!O%/@2.V%[:Q01P MK;65RDLLLDD-G;PPQJKP,RP#'F,?+?SC_@N1^VQX=_;R_P""(7[/_P 9OAA: MW6G^%?CW\;/"FE>(]+GE#-;PYOY;FSD8 "017M@J;L ,8@V!D"@#[R\+?\%+ M],M]<^&LGQ^_9U\6?#'PU\9=1BT[X:>)?$]Y92)\?(P_X M0_\ 8VTS^PK-AA;9[V[TRYF=%/0[[R=">N" 3P* /N_]FG]LOPA^T#X_\;? MK7?".H>#?B5\.+BU3QCX(UFXAFEAM[J+S;2^MIX6:.ZM)DW;95PRLC)(D;C; M7K]Y>6FGVDM_?W4<$$$;2333.%2-%&2S$\ DD]*_,_XM^(M0\!?\'7WPMT M_P +R-#'XY_91O+'Q-%$?EGB@U'4KB*1QW(>VB4,>R@5[_\ \%W_ (A^*/A= M_P $?OV@?%O@VZE@OS\/;BP6:%B'CBNY([29@1R"(IW.1R.M %5/^"P7PSF^ M$$G[8%O\#_%K_L]PZ\=,?XR"6U\DPB[^QG5UL/,^U-I8N/D-QM\S:#*(3$/, MKVK]JK]L?X-?LB?!ZS^,7Q#O;O4X=_P#!'GX=?$+4)YM-@T'Q#JLB7#$BZN=*MS;V,C9S MN:.*T3:W7]\Q[T ?KS\+?VXK36_VB+3]DKX^?"/4_AI\0M9\-R>(/">EZGJM MK?6GB"PB<)A)-"<.;#4VLK6]C!'.UXFVD=".M?II0 4444 >4?MS_P#) MH_CW_L O_P"AK7=?"[_DF?AW_L!6G_HE*X7]N?\ Y-'\>_\ 8!?_ -#6NI^& M?BSPW#\./#\,NL0JR:):*RD]"(4XH ZZBLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^ M^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ M (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@ M_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_O MJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X M3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^ M^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ M (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@ M_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_O MJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X M3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^ M^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ M (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@ M_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_O MJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X M3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^ M^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ M (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@ M_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_O MJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X M3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^ M^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ M (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@ M_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_O MJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X M3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^ M^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ M (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_OJC_A,?#'_0:@ M_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X3'PQ_P!!J#_O MJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJ@#2HK-_X M3'PQ_P!!J#_OJC_A,?#'_0:@_P"^J -*BLW_ (3'PQ_T&H/^^J/^$Q\,?]!J M#_OJ@#2HJ&QO[/4H!=6-PLL9) =>F:FH **** "BBB@ HHHH **** "BBB@ MH/3I110!\?\ PA_X*/?M8?%_2-8\#W'_ 2@^+_@WXCV=U/:6=IXKDLD\,%P MQ6.Z?61*HDMAPS^1#++@$11S<$\%^TO_ ,$6X/&W_!%G2O\ @FY\)O&5LOC# MP+:VVN^"_$MS!Y$$GBB"ZDOI)R@W>1%<3SW4>/F\I+G^+9S]^T4 ?G;^W1\. MOC=_P6(^"7PR_8PUG]G#QIX TZ^\9:/KG[0=_P"+=):SL]'L;#,UQI5E.S%- M3GGN B136IFA5%,DCK\JGM?VD_V7/'?P!_X*I^ _^"I_P>^'^J>(] O_ (<7 M7PY^,?A_PS8FYU"UTXS+=V&JVUJGSW8CN(HHIHH@THB6-HXY-K ?;M% 'Q+^ MS;^R[X_^.W_!5GQG_P %6?BSX!U7PQHFG?#6T^'GP=T#Q):_9]3N+$7#W=[J MUQ;$[[/?/))%#%+MF,;2-)'&645VNCW?C[_@I_\ LU?'W]F3]J7]D?Q/\(-( MO=5UOP-I5UKE_'=2:[IQA\N'6[8!$"C!F^%G_"4'3G7PI_86S[ ->_M4_NC!_9F'^S#-YY MW[OR/XZZW]J[_@EAKOPD^#O[)WC_ /9 \.S>)/%/['6L6)T_0EDB@N_%6@/! M#;:Q;Q-(RQK>31Q"=-[!"X=/XQ7Z$T4 ?"7Q5^ _C3_@I/\ \%%?@/\ 'K4? MA=XH\+?"7]G?^T_$*W/C70IM*O/$GB>Z2".UMX+.Y"W"0V?D^<]PZ*CNRI'Y M@W.OW;110 4444 >4?MS_P#)H_CW_L O_P"AK7:_#"PL6^&OAYFLHB3H=H23 M&.?W*5Q7[<__ ":/X]_[ +_^AK7=?"[_ ))GX=_[ 5I_Z)2@#7_L[3_^?&'_ M +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L M[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT M*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ M .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[ M]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3 M_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*F MHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\ M8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]" MC^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^ M?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH M A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?& M'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^ MSM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#G MQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A M_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ MOT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM M/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ M +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L M[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT M*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ M .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[ M]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3 M_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*F MHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\ M8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]" MC^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^ M?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH M A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?& M'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^ MSM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#G MQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A M_L[3_P#GQA_[]"OS?_X*%?\ !;73_@O\7+'X4_LIZ3HFO_V!JJMXQUB[A$EK M=;#A["!E_$/,,X8 +G!-=E_P6]_;1O\ X2_ X?"'X*_'7P_IOB76+S[+XFTB MSO&?6([!D.1'Y0(M@QX9I"C%3A#DFOQ?K],X-X3P^-H_7L:KQ=U&+OKYOOY6 M]3\+\3?$/&99B?[*RN7+-6W\?+Q\^_&WO7[WU\QQ3DE'(\R M]E2FI1DKI=8^3_1]4?>< \4XGBO)/K&(I.,XOE;M[LWWC^JZ,A_L[3_^?&'_ M +]"C^SM/_Y\8?\ OT*FHKYH^X(?[.T__GQA_P"_0H_L[3_^?&'_ +]"IJ* M(?[.T_\ Y\8?^_0H_L[3_P#GQA_[]"IJ* (?[.T__GQA_P"_0H_L[3_^?&'_ M +]"IJ* &QQ10KLAC5%]%7 IU%% !1110 4444 %%%% !1110 4444 %%%% M!1110 4444 %%%% !1110 4444 %%%% 'E'[<_\ R:/X]_[ +_\ H:UW7PN_ MY)GX=_[ 5I_Z)2N%_;G_ .31_'O_ & 7_P#0UKNOA=_R3/P[_P!@*T_]$I0! MNT444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% ! M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %% M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444 M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%17U_8Z792ZEJ=Y%;V\$ M9DGN)Y B1H!DLS'@ #DDT;B;25V2T=.M?%O[5W_!<;]DOX _:?#GPMNI/B1X MABRHAT&X":=$X_YZ7A!5A_UQ63T)%?,HT_\ X+#?\%8OFOY7^&WPUO\ ^!A+ MI=C/ ?\ 9YNK\%?7,)(ZI7TN$X8QU6E[?%R5"E_-/1OTCNWVVOT9\1F/'F54 M,0\)E\98NO\ R4M4O\4_ABN[UMU1]E?M7?\ !7?]CG]EC[3H,_C3_A+_ !+! ME?\ A'O";I<-%(.-LT^?*AP>"I8N/[AKXYNOVH?^"M__ 5,NI-#_9O\%S?# MOP'(X<,;SQ%;J+")QWCL@2A'_74RGN"*^QK2TM;"UCL;&VCAAAC"0PQ(%5 M% P% ' '&!73_:609/I@*/MJB_Y>5%IZQA^3>J.#^Q.+^)-VTN.0G)R@/ MFW!SW=@K=XZY']OS_@A79?%7XGZ7\1/V04T;PQ;ZOJ$<'BGP_*H@L[%#]Z]M MD08 'S0*!DX*8R17Z345R4^*\^IXWZU[9N5FK/X;/\ N['I5O#WA&KE?U!8 M91A=.Z^.ZZ\[O)]M7:S/+?V0_P!D/X1_L8?".U^%/PITOTEUC6+A!]JU6ZQA MII6'Y*@^5%X'^*NMIX3\%R> K7Q7JESJ3[SI]I/:IWC_39X-"3X4ZCIWP+T&^A*-9Z M-,T?GZ])&P!2ZU$*ICR-T-DL*_(]Q?A;_ (*7Z9;ZY\-9/C]^SKXL M^&/AKXRZC%IWPT\2^)[RRD2YOYX6GM+"_AMYG?3KJYB5FAC?>"R-&[1RXC;N M?VG?VT/!7[.GCCP/\$M+\):GXQ^)/Q*O;F#P3X%T*6&.>ZBMHO-N[V>:=UCM M;2"/!DE0-MDM+ MM-6MXUDC(^ZRI(^".E MW>F7,SHIZ'?>3H3UP0">!0!]W_LT_ME^$/V@?'_C;X%:[X1U#P;\2OAQ<6J> M,?!&LW$,TL-O=1>;:7UM/"S1W5I,F[;*N&5D9)$C<;:]?O+RTT^TEO[^ZC@@ M@C:2::9PJ1HHR68G@ $DGI7YG_%OQ%J'@+_ (.OOA;I_A>1H8_'/[*-Y8^) MHHC\L\4&HZE<12..Y#VT2ACV4"O?_P#@N_\ $/Q1\+O^"/W[0/BWP;=2P7Y^ M'MQ8+-"Q#QQ7X=>. MF/\ &02VODF$7?V,ZNMAYGVIM+%Q\AN-OF;091"8AYE>U?M5?MC_ :_9$^# MUG\8OB'>W>IPZYK%CHW@_1/#D275_P")M5O7"6=A81EU6::9CE:WA4SM,/?S29 ?7FO@K]GOXL^/? MCUX]_P""//PZ^(6H3S:;!H/B'59$N&)%UI_#3XA:SX;D\0>$]+U/5;6^M/$%A$X2Y%K=6S ME6N;%Y&BUI/VDH]"2 M:$X&X?AQX?AEUB%63 M1+164GH1"G% '745F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC M_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 M &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF M/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^& M/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0 M!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)C MX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC M_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 M &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF M/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^& M/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0 M!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)C MX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC M_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 M &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF M/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^& M/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0 M!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)C MX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC M_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 M &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF M/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^& M/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0 M!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)C MX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC M_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 M &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU1_PF M/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0!I45F_\ "8^& M/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U0 M!I45F_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?5 &E16;_PF/AC_H-0?]]4?\)C MX8_Z#4'_ 'U0!I45F_\ "8^&/^@U!_WU7._$S]HOX&?!GPS)XQ^*GQ3T;0=- MBSFYU*[$8<@9VH#\TC>BJ"Q["KA"=6:A!-M[):LSJU:5"FZE22C%:MMV2]6S MM*S?%WC+PCX \/7/B[QUXHT_1M*LH]]WJ6JWB6\$*^K2.0JCZFOSK_:-_P"" M^MIJFLGX9?L*_""^\5ZQ=2&&TUW6+"7RY7[&WLH_WTWJ"YC((Y1A7G7A+_@G M-^W1^WSXBMOB5_P4"_:+G\.Z5YGFV^AS3+/=QJ>T-I%BVL\CC)^3#J4J26^F+*3@!>/.N3NXVJJ*V1M MD->+V/[(?_!67_@J)>Q>(OVI?'UQ\/O \\BRPZ/J$#6T83.1Y6F1D.[#L]RR MM@\.:^Y_V6_V(OV)_P!D&VBG^$?@NP;64CVR^*-987>I2<8)$K+B('NL2HI] M*]M_X3'PQ_T&H/\ OJM/[=RW*O=RFA:7_/RI:4_5+:/]:&*X2SOB!\_$6+;@ M_P#EQ1O"GZ2E\4_T>S/G?]E'_@DM^QW^RE]FUW2O P\4^)8,-_PDGBM4N98Y M!SNABP(H,'.&5=X'!791AU0P5*-."Z15OF^[\WJ:5%9O_"8^&/^@U!_ MWU1_PF/AC_H-0?\ ?5I0"ZL;A98R2 Z],U-0 4444 %%%% !1110 445Q'[3&N>,?#'[.'Q! M\2?#O3;R\\0:?X(U:YT*STXD7$]Y'9RO#'%@$^8T@4+CG)% ';T5^/?[37[2 MWQ+_ &A+SX)?\$>O^"<7_!1CQ)\0_&GQ-":_\;/CSHWB&"YOO#OAF")&G:.6 MR"1V$D[$[(5V2+B.-S_I(9OM;_@G#HNG_!?XC_%/]CWP/^T_XQ^+/A;X;+H? MDZ[X^\1KK&JZ/JUW'=F]T>6\5%,JQ106-P$<%HC?M'D*J(H!]75B?$SX<^"_ MC%\./$'PC^)&B+J?AWQ3HEWI&O::TTD8N[*YA>&>(O&RNFZ-V7*]8N+@W^5V> M7'/>M&[8SPX(KJ/%O_!"?X9^(O\ @B';?L9_LY?#N#X1_;M0N9 MEC\=6UE:B62QL,S7&E64[,4U.>>X")%-:F:%4 M4R2.ORJ>U_:3_9<\=_ '_@JGX#_X*G_![X?ZIXCT"_\ AQ=?#GXQ^'_#-B;G M4+73C,MW8:K;6J?/=B.XBBBFBB#2B)8VCCDVL!]NT4 ?$O[-O[+OC_X[?\%6 M?&?_ 59^+/@'5?#&B:=\-;3X>?!W0/$EK]GU.XL1V_X)#R?L M\^)#\8QX&;X6?\)0=.=?"G]A;/L U[^U3^Z,']F8?[,,WGG?N_(_CKK?VKO^ M"6&N_"3X._LG>/\ ]D#P[-XD\4_L=:Q8G3]"62*"[\5: \$-MK%O$TC+&MY- M'$)TWL$+AT_C%?H310!\)?%7X#^-/^"D_P#P45^ _P >M1^%WBCPM\)?V=_[ M3\0K<^-="FTJ\\2>)[I(([6W@L[D+<)#9^3YSW#HJ.[*D?F#V]C.-:E.I*$9)RC:ZOJK[772_0A_L[3_ /GQA_[]"C^SM/\ ^?&' M_OT*FHJ#0A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^ MSM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#G MQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*FHH A M_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM/_Y\8?\ MOT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ +]"C^SM M/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FHH A_L[3_^?&'_ M +]"C^SM/_Y\8?\ OT*FHH A_L[3_P#GQA_[]"C^SM/_ .?&'_OT*FKQG]J' M_@H!^RG^R%9R+\8_BC:QZL(]\/AK2\76I3<9'[E#F,'L\I1#_>K?#X;$8NJJ M5&#E)]$KLY<9CL'EV'=?%5(P@MW)I+[V>P?V=I__ #XP_P#?H5Y[^T#^TY^S M5^RUX>_X2/X[?$;1= C>,M:VDY#W=UC_ )XVZ!I9>>,JI [D5^>/C3_@JY^W MY^W9XDN?A;_P3U^!-_H>GE_*GUU(4N+V-#P&EN9,6MB"/7+ _=DS76_L_?\ M!!6_\6^(?^%K_M]?&O4?%.M7D@FO=%TG4I9#*WI;UU3_ .G<;2J/](^KN?"SXTQ^=3=+AS"NMT]K.\**]+VE.W5*S[7, M'XO_ /!:SXW?M"^*G^#O_!.;]G*^N;ZXRD6N:CI O;[;G'FQVJ;HH%!Y\R9G M7!^95H^$7_!$G]H_]I'Q3'\7O^"BOQ[U$7,^&?0=.U!;R^"DY\IIVW06RC^Y M"LBX/!6OT<^$'P-^#_P!\*IX)^#'PXTGPWIB8+6VEVBQF5@,;Y'^]*_^VY9C MZUU=*?$M/!0=+*:*HK;G?O5'\WMZ+;HQTN!ZV:5%7XBQ,L3):JFO@?V!\$/A)I.C;XPEUJ @\Z\NL?\];B3=(XSSM+; M1G@"O1?[.T__ )\8?^_0J:BOF*U:MB*CJ59.4GNV[O[V?>8;"X;!T51P\%"" MV44DEZ):$/\ 9VG_ //C#_WZ%']G:?\ \^,/_?H5-161N0_V=I__ #XP_P#? MH4?V=I__ #XP_P#?H5-10!#_ &=I_P#SXP_]^A1_9VG_ //C#_WZ%344 0_V M=I__ #XP_P#?H4?V=I__ #XP_P#?H5-10!#_ &=I_P#SXP_]^A1_9VG_ //C M#_WZ%344 0_V=I__ #XP_P#?H4?V=I__ #XP_P#?H5-10!#_ &=I_P#SXP_] M^A1_9VG_ //C#_WZ%344 0_V=I__ #XP_P#?H4?V=I__ #XP_P#?H5-10!#_ M &=I_P#SXP_]^A1_9VG_ //C#_WZ%344 -CBBA79#&J+Z*N!3J** "BBB@ H MHHH **** "N6^.6O:YX6^"GC#Q/X8\5:1H6IZ=X6U"ZT[6_$ /V#3YX[:1X[ MBYQSY$; ._\ LJU=369XTU;PIH'@[5M=\=W5I!H=EID\^LS7X!@CM$C9IFDS MQL"!BV>,9H _-_\ X)J_\%-/^"57@W]EK2=9_:5_;$_9UM_C-XATUX/C1K6G M6>BZ,^MZEO-]+TW0XET+Q%!^R=IFH2ZY8Q!8AJ'G3LLU MR)"59IW4%F?+8+8KZ^_X(H?&/X%_'U?C+\2OV=_V"]:^!?AD>-+;2["VU#P# M%X:AUT6L#(\QL82R1W<$S36D[([!A;P,1&Y>*, ^Z**** "BBB@ HHHH *** M* "BBB@ HHHH **** /*/VY_^31_'O\ V 7_ /0UKNOA=_R3/P[_ -@*T_\ M1*5PO[<__)H_CW_L O\ ^AK7=?"[_DF?AW_L!6G_ *)2@#=HHHH **** "BB MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBN?\ B!\6OA9\)]._MCXI M?$G0?#=KM)%QKNKPVB$>QE90:J$)U),?^#A'QSXZU9O M"G[*W[(5[JM])G[+)K%W+=3/Z9M+-,_E*:]["\+9]BUS1H.*[R]U?^36/DL? MQ]PCE\N2>+C*7:%YN_;W$]?6Q^GM>6_M>?M>?"/]C#X1W7Q6^*VJ?WHM'T>W M3V!_/[_A)/^#@S]K+C3=#N/AUI%S]_%K;:'Y.>G,Y M:^'_ '/OVJUHW_! G]H;XNWP\3?M8_MH/>ZB4)/V6.ZUB3ETM/Q/&Q/&.?YGAY0R3+*KDU[LZJC3BO[ MR4G[R7JCX'_:\_:\^+G[:'Q!_#,/P"_;0\6SQV&FVP3PUXUG@EN'2-1@6ET(U9VP.$EP M< ;7X :O@?\ : _9U\5? #XPZ[\([_7M(UU]%O&A75M"U&.>WN%[,"K'8V.& MC;YD8%3TY^UO^"37_!)+X2_M)^ [SXY?M':];ZKILS/:Z5X4T/7 LUNX/,UX M\#[XFX^2$D'!W-P0*_1,]GPK/(U"LU[.*7*H6YE?;E73SOIW/R?AK)?%/ \1 M_7(8:K"=1OGG6A.-*7?FDTDU?;E;>W*?HGX:_P""CO[!WBLJ-*_:T\"QEAP- M1U^*S/\ Y,%*] \-?'7X(^,]G_"'_&/PKJV_[G]F>(;:?=]-CG-?)'B7_@WZ M_80US<=*U'QWHQ)RHT_Q!"X7_O\ V\G%>?>)?^#;_P""MUO_ .$/_:2\46&? MN?VGI%M=X^NPPY_2OS7ZGPC5^'%5(?XH7_\ 23]A_M/Q&P_\3 4:G^"KR_\ MI:/TA5E=0Z,"",@@]:6ORT;_ (-]_CUX%;?\(OVX1 5.8\Z1=:<0?K# MX?\ ;T!(?PYH_P"&RO\ @OG\-C_Q5'[*QU_ROO\ _%"O=;__ 7RKG\*/]5* ML_X.+H3]*FOW-!_Q$&A2_P!YR_%4_-T7;[TV?J717Y:?\/L_^"@7@(@?&#]@ ME8"G^M_XDFJZ;Q_VW$N/QS6CH'_!R-X?\S[-XV_9&U"S=#B0Z?XN28Y_W9+6 M/'TS2?!G$%KTZ:FO[LXO]1Q\3>#N;EJUY4WVE3J+_P!M:/TZHKX$\-_\'$G[ M'6I%8O$GPP^(6F.>KIIUG/&/Q%T&_P#':] \-?\ !&L_H_%AI_)7_ "N>K0XYX0Q'P8ZFO62C_P"E6/KN MBO!/#7_!4/\ X)^>*]O]E_M6>%8M_3^TKE[+\_M"IC\:]!\-_M0_LS^,L?\ M"(?M$>!=5W?=_L[Q;9SY_P"^)#7GU"M9;XA^)()/'R^(O$L&5_X1CPL5NKA''\,SAA%;X., MAV#X.0K5\3'Q=_P6%_X*P'RO"ED_PV^&]\((L.3K, BTR)_]BT!(D';]\T@/7:M M?0_V-D^4ZYI7YIK_ )=T]7Z2ELO-;]F?%_ZS<2<1>[D.%Y*3_P"7]>\8V[PA M\4O)[=T?.FI_MK?\%6O^"G6H3^%OV1OAO=> O!DLIBGUK3IS"%3.#YNJ2!?F M'4I;*KXXPU>P?LO?\$"O@YX,O(_'/[6?C>Z^(&O22>?<:7:RR6^G"4G),CY$ M]R=W.YC&#DAD-??VF:9INBZ?#I&C:?!:6EM$([>UMHECCB0# 554 * .@'%3 MUCB.*,1"DZ&706'I_P!WXGZSW?RL=6#X"P53$+%YS5EC*RZS^"/^&FO=2\G= M>1E>"O O@KX;^&[;P=\/?"6FZ'I-FFVUTW2;)+>"(?[*( H_+FM6BBOF)2E. M3E)W;/NX0A3@HQ5DMDMD%%%%(H**** "BBB@ HHHH **** ,SQIXT\*?#KPI M?^.?'.OVVEZ1I=LUQJ&H7DFR.&->I)_0
G12%!JFH:PFG>:!_&D7E2MM/;=M/J!TH_P""_P!\3?$6@?";P)\* M]+O'BL/$>KWEYJBQMCS1:)#Y:-ZKNN"^.FZ-3V%?E=7T&6990KT/:U=;[(_0 M^&.&,#CL"L5BDY@^*+ M> S3>&]8*>9+&/O/!(IVS*._W6'4J!S7T+7\Z7P6^)/B7X/?%KPY\4/"%U)% MJ.AZQ!=VQB."^UQNC/JKKE".X8@]:_HMKCS3!0P=1+_!7P5_X7=\*=9N;+P/I_A;4 M[R#1?'?AF>W@2\L;HS#=ITD\L$%Q$5)6.:R@5P(RY;?_ ."4?@7]O>P\2_&O MXU_M]>$O"_@;7/B7XSL=9T7X5>%M>CU&/P[;PZ?%8&XDFC9D:2Z^R(S%6(9H M';"EBB^:?\.6?VVO^D^/[2'_ )*5[-_P3D_8R^*/[&7C7XE^'OBS^VIXH^-N MH^(SH^I0:WXXN]^JZ= $NH1:LH9E6WWQN\97:"SRC:"I9@#ZHHHHH ^$_P!J MK_@N-H_[+<%U\6;_ /8-^,WB3X)Z3J:6>L_&O1=,M!IBAI1$;NWMY)EN+BSW MD*MT4CBER#$TBM&S_5OC3]J3X!_#W]FFY_;!\7?$FQM/AQ:^%$\2/XG?<87T MV2%9HID4#>YD1TV( 7=G50"Q KY$_P"#@/XW_%GX7?L)>*/AMX1_8K\;>.OA M[KVF1V7Q/\5^$M0TZ,>'O#A=?M[P6[2/64B7- M_/"T]I87\-O,[Z==7,2LT,;[P61HW:.7$;=S^T[^VAX*_9T\<>!_@EI?A+4_ M&/Q)^)5[

"? NA2PQSW45M%YMW>SS3NL=K:01X,DKDDEE6-)'(6ODK_@ZG M4:3_ ,$:O&/C+2[EK/5?#'B_PSJ7A^\@;;):7::M;QK)&1]UE21\$=*X?]FK MQWXD^.O_ = ^)M>\?(P_P"$/_8VTS^PK-AA;9[V[TRYF=%/0[[R=">N" 3P M* /N_P#9I_;+\(?M ^/_ !M\"M=\(ZAX-^)7PXN+5/&/@C6;B&:6&WNHO-M+ MZVGA9H[JTF3=ME7#*R,DB1N-M>OWEY::?:2W]_=1P001M)--,X5(T49+,3P M "23TK\S_BWXBU#P%_P=??"W3_"\C0Q^.?V4;RQ\311'Y9XH-1U*XBD<=R'M MHE#'LH%>_P#_ 7?^(?BCX7?\$?OV@?%O@VZE@OS\/;BP6:%B'CBNY([29@1 MR"(IW.1R.M %5/\ @L%\,YOA!)^V!;_ _P 6O^SW#KQTQ_C();7R3"+O[&=7 M6P\S[4VEBX^0W&WS-H,HA,0\RO:OVJOVQ_@U^R)\'K/XQ?$.]N]3AUS6+'1O M!^B>'(DNK_Q-JMZX2SL+",NJS33,!I MK2(V!_8D::;@8\UO"IG:8>_FDR ^O-?!7[/?Q9\>_'KQ[_P1Y^'7Q"U">;38 M-!\0ZK(EPQ(NKG2K] 'Z\_"W]N*TUO\ :(M/V2OC MY\(]3^&GQ"UGPW)X@\)Z7J>JVM]:>(+")PER+6ZMG*M M7'O%?F7_ ,%X?$6H?#W]NW_@GM\2/"\C1:TG[24>A)-"<.;#4VLK6]C!'.UX MFVD=".M?II0 4444 >4?MS_\FC^/?^P"_P#Z&M=U\+O^29^'?^P%:?\ HE*X M7]N?_DT?Q[_V 7_]#6NI^&?BSPW#\./#\,NL0JR:):*RD]"(4XH ZZBLW_A, M?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/ M^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[Z MH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ MA,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ M +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J M/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A, M?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/ M^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[Z MH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ MA,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ M +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J M/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A, M?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/ M^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ A,?#'_0:@_[Z MH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZH TJ*S?\ MA,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLW_A,?#'_ $&H/^^J/^$Q\,?]!J#_ M +ZH TJ*S?\ A,?#'_0:@_[ZH_X3'PQ_T&H/^^J -*BLQO&?A9%+OKD &22 MW2O+?BA_P4*_8F^#:R+\0?VEO"UK/%GS;*TOOMEROU@MP\@_[YK:AAL1B9\M M&#D^R3;_ .;%8W!X&G[3$U(PCWDU%?>VCV6BO@3XL_\'#'[)?A'S;3X5> / M%?C"X3/ESO!'IUI)Z?/*6E'XPUX]>?\ !7[_ (*:_M).;7]EK]E*WTFQG_U. MIQZ-<:BT>>F;J;R[8?\ H^:^@H\(YY4ASU(*G'O.2BON>OX'Q^)\1N%:-3V M5"JZ\_Y:493;]&ER_B?JY7!_%;]J+]G'X&QN?B]\MPQW#>R MP[O,<^RJ37YJ_P##'7_!8W]JH^;^T-^UG'X4TZXYNM-N/%1164_].FEKY#'V M9EQ7>?"K_@@%^S'HSI?_ !K_ &D=?\23YWRP:+;1:="[=PQ?SW8>X92>O'2M M?[&R'"?[WCE)]J<7+_R;8YO]9N+LQTR[*I03^U7FH6]8*\ON9ZI\6?\ @O9^ MPG\/_-MO!5[XE\:W*Y"?V)HI@@+?[4EV8CCW56]LUX3J7_!?L6-?O+Y'YB_P#"E/\ @O\ ?M8?-XY^)\WP^TNY^ZDFMP:.%0]5*:[-@"IEQ?FL8\F$C" MBNT()?B[LTI>&^0U:BGCY5<5/O5J2EKZ*R^6I\]?";_@CA_P3X^$WE7$?P.B M\1WD>,WGBV_EOM^/[T+$0?\ D.OHKP=X"\#?#O25T'X?^"])T*Q7&VRT?3HK M6(8Z82-5'Z5XC\3_ /@J=^PK\*UDAU+X[6&KW4><6?AJ"2_9R.PDB4Q _P"\ MXKYS^(W_ 7U\-W-V=$^ /[.FKZO?#_ %:;3M4\>7L]K<:A;N5DBL($0SJC#E6%3?M'_\ M!:/]J!O+\%^$D\":9DATR'2U5#T827S-.?K'R>PQ7GG[3/_!-C]L.'X3W M_P (/'VN:5B6;0X-5O-1N4MF_UKI).%R4PI,:*1M!()V@&L+@Z-'$1 M=:I'?:]_2_S/KLJR7!X+,:4\;B*>C^%/F=^E^BUMN?&%>N?L2?M0>,/V3_V@ M=$^(F@:M-'IDM[%;>)=/60^7>V#.!(K+T+*"70_PLH/J#Y'7I'[*_P"S-XU_ M:L^+5E\,?"4PLH'/F:OK<\)>#3;8?>E< C)[*F068@9')'TU?V7L9>T^&VI^ MG8Y85X.I]9M[.SO?L?T&45^6B?";_@KC^Q2P?X/?&$>//#UK]RPMM1&H1B(= M$^RW@$D>?2#/UKL/AG_P79\0>$M47PA^UK^SA?Z5?0X%W=Z KPRH>G-G=D,/ M^_OX5\B\MJR5Z,E->3U^YGY!/AO%58N>"J1K1_NOWOG%ZK\3]&Z*\2^#G_!1 M;]C3XYI%#X*^..E0WTN -*UDM8W6[^ZJ3!?,/^X6'O7K7_"8^%STUJ#_ +ZK MAG3J4I6FFGYGA5\/B,-/DK0<7V::_,TZ*S?^$Q\,?]!J#_OJC_A,?#'_ $&H M/^^J@Q-*LW7_ =X0\61>3XI\*Z;J28QLU"QCF&/HX-'_"8^&/\ H-0?]]4? M\)CX8_Z#4'_?5-2E%W3)E&,U:2NC@?$O[$?[''C#W3N?FG;P?9K M+_WVL8;]:\^\2_\ !(G_ ()S>*MQU']F+2X&;^+3-4OK/!]A!.@_3%>__P#" M8^&/^@U!_P!]4?\ "8^&/^@U!_WU7;2S3,Z'\.O./I*2_4\NOD.1XK^-A:?^)?^#?'%AG[O\ :4=G=X_[XBBK[_\ ^$Q\,?\ 0:@_[ZH_X3'PQ_T&H/\ MOJO1I<4\0T?AQ,OF[_G<\:OP#P;B/CP4%Z+E_P#26C\R[W_@W2\9^&KAM0^& M'[:4EM,3\JS>%I+9AZ9DBNR3_P!\BHO^'2__ 5K^'_S_"S]OD-%$/D@'CS6 MK3>R_BRC/ M_%"+_)(\Y^&7"<'?#PG2_P %6HOSDS\QO^%&?\'$?PWQ_P (O\8#K_E\K_Q4 M6EW6[_P8(N?QI/\ AHO_ (.%OAP,>)_@8VO;/O?\4M8W6[_P7NN?PK].O^$Q M\,?]!J#_ +ZH_P"$Q\,?]!J#_OJC_6E5/XV"H2_[K],O^$Q\,?]!J#_ +ZJOJ6M^ ]9 MM38ZQ<6-W"WWH;F(2*?P8$4?VUD%3^+ET?\ MVI*(?ZK\7T/]WSJ?_;]*G/\ M78_)#]N#_@NYXI^/OPC;X4_L\^"-4\$_VM&\7B/6;J_1[HP$8,%NT8&P,,[I M.&Q\H R37R)^R7^UW\9/V,OBI#\5/@]K")*4\G5-)O S6FIV^58 M$,IY!'.?N?\ X*V_\$K?"JK?_M/_ +(VEVR*H:?Q9X*TV+:H Y:[M(U&!ZO" MONRCJM?"?[*7[*WQ,_:[^+%I\+OAS;QPJQ$FKZS=@BVTNVSAII2/R5!\SG@= MR/T[(I\,SR&&_P#@H_\ \%KYK_5_$_QSTCPY\/;*_%OJ.G6-Z(K6W; 8 M1BPA.&^",)A*=/&YK'V^,:O*)&FNY1VVP1!I&'OMQ MSR151A.GU'=75M8VTEY>W$<,,2%Y997"JB@9)) M/ '>OSL^,'_ 7.UKQ9K!\"?L;? 2_UG4)V*6NHZ[;O*\AZ9CLK8EF]06D' M;*=JXFV_9 _X*.?MU72:O^UM\?QX3\/S.'&D7MR&*KG(*:?:E8@1TS*ROQSF MN^.73@N:O)07GO\ <>_#ARM1@JF/J1HQ\W>3](K4^LOV@O\ @K;^QI\!O/TN MU\=MXPUB'*_V9X15;E5;T>X)$*\\$!V8?W>U?,%__P %#?\ @I;^W!>R^'OV M./@A-X:T620QMK%G;B9T&<$27]R%MXSCG"*KCG!-?0?[/G_!++]A#X&^1JFM M:2OC;6(L,;_Q8XFA5N^RU4"'&>F]78?WJ^G['Q%X*TNSBT[3+ZSM[>! D,$" M!$C49IVFW$\]XD\@.[RIKV9@5)&5&$*AB/ MFQ7PK\2O@K\6_@[XEE\(?%#XHQ2%#;:A8NF\^J-C;(I[,I(/4$U_0W_ M ,)CX8_Z#4'_ 'U1_P )CX8_Z#4'_?5;T,ZQ%-OG2:^ZQW8'C;,,-)JM!3B] MDO=MY*R>GJOF?D+_ ,$TO^":7Q7^-?Q7T7XL?%CP5>Z'X%T.]BOG?5K5H7UA MXV#I!"C@,T98#?)C;M! )8\?L96;_P )CX8_Z#4'_?5'_"8^&/\ H-0?]]5P MXS&5,94YI:);(\+.,8?!^IR>$X0@;?J8M9#:K@\ M',P08/% 'Y6?&?\ 8$_X)%_L[?$L?!SXY_\ !P-^T)X5\4!E%QH>M?M46T%Q M:EL%?/5K?_1\@@CS-N0<].:^W_\ @F=_P3^^'?[#EAXRUSX1_M*^,OBEX;^( M\NFZO8^(_'GBM-;OF>.&2-ME[&B+-;LAB>,C)!9^2-M>#_L;_L/?\&^'AS]G M+3?B0=$^!WQ'?5-/6^\5_$/XNW.FZQJM_?R /=7%])J;.UI<&4N9(L1^6^Y2 MJD$5Z+_P2.\<_LN^(_B!\(=+@\-3:(SMH:>(I()I-9AT MDM\@M ITYRL/[GSYIW08DR0#[7IEQ(\-N\T5N\K(A*Q(0&<@?=&X@9/3D@>] M/HH ^.M!_;]^-O[2/P?\4?#NV_X)>_&OPUX\O;&\TJW\-_$#0;:UT25Y$>)9 MI=5\XV[6@#!I"F^4J&$<4IV!_/?CU_P11F\3?\$._#?_ 3)^&WCJW;QI\.M M'L-4\%^*+I#';OXFM)FNVE(.3%#/++ZM<6Q. M^SWSR210Q2[9C&TC21QEE%=KH]WX^_X*?_LU?'W]F3]J7]D?Q/\ "#2+W5=; M\#:5=:Y?QW4FNZ<8?+AUNV 1 HW.)$7YTW1C;+)\VWZEHH _,F'P=^V])_P1 M[;_@D/)^SSXD/QC'@9OA9_PE!TYU\*?V%L^P#7O[5/[HP?V9A_LPS>>=^[\C M^.NM_:N_X)8:[\)/@[^R=X__ &0/#LWB3Q3^QUK%B=/T)9(H+OQ5H#P0VVL6 M\32,L:WDT<0G3>P0N'3^,5^A-% 'PE\5?@/XT_X*3_\ !17X#_'K4?A=XH\+ M?"7]G?\ M/Q"MSXUT*;2KSQ)XGND@CM;>"SN0MPD-GY/G/<.BH[LJ1^8-SK] MVT44 %%%% 'E'[<__)H_CW_L O\ ^AK7:_#"PL6^&OAYFLHB3H=H23&.?W*5 MQ7[<_P#R:/X]_P"P"_\ Z&M=U\+O^29^'?\ L!6G_HE* -?^SM/_ .?&'_OT M*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA_P"_0J:B@"'^SM/_ M .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA_P"_0J:B M@"'^SM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA M_P"_0J:B@"'^SM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/ M[.T__GQA_P"_0J:B@"'^SM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\ M8?\ OT*/[.T__GQA_P"_0J:B@"'^SM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@" M'^SM/_Y\8?\ OT*/[.T__GQA_P"_0J:B@"'^SM/_ .?&'_OT*/[.T_\ Y\8? M^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA_P"_0J:B@"'^SM/_ .?&'_OT*/[. MT_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA_P"_0J:B@"'^SM/_ .?& M'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA_P"_0J:B@"'^ MSM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T__GQA_P"_ M0J:B@"'^SM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ OT*/[.T_ M_GQA_P"_0J:B@"'^SM/_ .?&'_OT*/[.T_\ Y\8?^_0J:B@"'^SM/_Y\8?\ MOT*/[.T__GQA_P"_0J:B@"'^SM/_ .?&'_OT*RO&_B;P#\-O".H^/?'NIZ?I M.C:3:O7F^B6[Z]$?IC^Q9_P4P_9E_;<\7:_ MX"\!6\FDZSI-U*VG:=K$:)+JUBIP+N$#\VC^\@()R#D?2']G:?\ \^,/_?H5 M_,-X(\;^+OAKXNT[Q[X"\176DZSI-TESIVHV4I26"53D,I'Y$=""0<@D5^@_ MPM_:@_X+A_\ !0'P]_:'P-EBT?P]&PM;K7=+L+/3+>211ABMQ<%I78'[P@)V MD]!P*^LSS@2&&K*KAZT84>OM)6L_6VM^A^>\*>+-7'89X?&X:=7$IZ*C&_,O M-77+R]7M;7N?K3J]QX8T#3Y=7UV>PLK2%=TUU=LD<<8]69L #ZUX-\6?^"G_ M /P3U^#7FP>)?VA/#E_=1Y'V/PTC:I(6'\.;571#_O,N.]?'ND?\$)/VK?C? MJ,7B']L+]M)[R?=O:*":\UJ89_A$MT\0C/N%8#H,BO>?A-_P0;_8-^'GE7/B M_1O$7C2Y3!8Z_K;11;O:.T$/'^RQ;WS7@?V?PM@_]XQQV$^U<1_PV?_ ,%MOVJ_W7P%_9A3PAI]QQ;:A!X26W5D M/?[5JK&)O]Y OMS7Z1_"S]FO]GSX(1+'\(?@IX7\.,JX^T:3HD,,S_[TJKO< M^[$FNVH_MK(L)_NF!3?>I)R_\EV#_5CBS,=[]D#P= MY5W\4/&7BOQC$M+DUOQ5K]EIE ME%_K;O4+I(8D^KN0!^=95N+<]JQ]G3J*G'M!*/Y:_B=6$\.>%:-55*M%UZG\ MU64IM_)OE_ \R^%/["'[&_P26-OAI^S=X3L9X<>5?SZ4EU=+CTN+C?+_ ./5 MZH--TX# L(0!T B'^%?/GQ4_X*K_ +"OPH\RWO?C?::Y=QYQ9^%H'U OCTEC M'D_G(*^=/'O_ 7MM=9U'_A'?V=/V:=5U>[G8K:3:[>!78]O]&MA(7^@E%>5 M*AF>.ESU.:3[R;_-GZ1EG"F-A2Y,'A?9P\HJ$?T1^AW]G:?_ ,^,/_?H53UW M4/"'A;3)-:\37VFZ=9PC,MW?RQPQ)]6? 'YU^;W_ LK_@N=^U3QX7\$S^ = M*N?O,FFPZ.$4]&#WC-=8]T)]:N:%_P $1?V@/BUJ")_$NKNR;O^N5N(HR/9E;\>M?1GP_^$?PJ^$]A_9?PP^&VA>'K^+7)'O&>>M7M!_X(C?M$?%O4 M(_$/[5O[6K7,^=SPVCW.JS<]5$UTT80_16'UK]*Z*/[2JPTI1C#T6OWL3XEQ M5)6PE.%)?W8J_P V[GR=\*_^"+O[#WPY\NYU_P *:OXNNH\'SO$>KOLW?]+?&W[/&CR:A-(9)Y].GN+#SG/)9UM9(U=B M>26!)[UZ'\+?@9\'O@GX<'A+X3_#;1]!T_=N>#3[)4,K=-\C8W2-CCI*GW&"/6NEHJ$W%W1A"=J/PMU/6? M\^2D=G.;VR#'N89SO_!95 ].F/$G_8F_ MX*S_ +%[&[_9T^+0\8Z%;[0XDS.G#V=9JK#M-YTNRDL+H <;OLEV,.3ZB1%]!S7U1\$?^"D/[#WQX\FT\,_%K2M*U&; M &D^)HAI\^X]$!EQ'(WM&[5[3XV^'W@/XE:(_AKXB>"]*UW3I/OV.L:?'+YH_-/5>B/K>*STN>-9H;6W='4,CJ MBD,#T(/>G?V=I_\ SXP_]^A7YG2?\$\O^"HW[&\K:A^R5^T WB/28&+1:1:: MB+&]1EQ_Q+/% M\8L'!/0>:Q,#'/&%D)]J^A[*^LM2M(]0TZ\BN()D#PSP2!T=3T(8<$>XKBJ4 M:M%VG%KU/$Q.#Q6#GRUX.+\U83^SM/\ ^?&'_OT*/[.T_P#Y\8?^_0J:BLSF M(?[.T_\ Y\8?^_0H_L[3_P#GQA_[]"IJ* (?[.T__GQA_P"_0H_L[3_^?&'_ M +]"IJ* (?[.T_\ Y\8?^_0H_L[3_P#GQA_[]"IJ* (?[.T__GQA_P"_0KF/ MAM\!_@S\'?[7_P"%7?#/1]"_M[5)-1U?^SK)8_M-R_WG;^BC"C)P!DUUM%6J MDXQ<4W9[KO;:YG*C2G4C.44Y1O9VU5][/I?J0_V=I_\ SXP_]^A1_9VG_P#/ MC#_WZ%345!H0_P!G:?\ \^,/_?H4?V=I_P#SXP_]^A4U% $/]G:?_P ^,/\ MWZ%']G:?_P ^,/\ WZ%344 0_P!G:?\ \^,/_?H4?V=I_P#SXP_]^A4U% $/ M]G:?_P ^,/\ WZ%']G:?_P ^,/\ WZ%>+?M!?\%%?V1?V:_/L/'OQ8M+S5H, MAM T#%[>;Q_ RQG;"W_75DKY"\7_ /!7[]K3]I;7IO '["G[.5W"Q.W^U;BQ M.HWD:GI(R@?9[8?]=#(OO791P.)K+F2LN[T1[&#R',\;'GC#EA_-+W8^MWO\ MKGZ*^*M>\">!=#F\3>-M8TG1]-MES<:AJEQ%;P1#U9Y"%'XFOD;]H+_@M/\ MLB?"GS](^%FE7/C_ %6/*K_9D(MK!6'9KF5-'4^M>0^%?^"1W[8W[46N M0^//VZOVB[JU!.\:3'>G4;N('K&N"+:V'_7/S!_LU]<_L^_\$W?V0/V;O(O_ M 7\*;74M7@P1K_B3%]=[A_&I<;(6]XD2MO9Y?A_CDYOLM%]_P#D=WU;A[+O MX]1UY_RPTC\Y;OU1\7CXL?\ !73_ (*"?NOA1X)/P\\(WGW-1LX#I<+1'H_V MR7-Q-Z$V_!_NUZ7\"O\ @A)\--+O%\5?M/\ Q2U+QAJ4K^;=:;I4CVMJ[G[P MDF8F>;/]X&(\U]]45,LQJJ/+12@O+?[S*KQ'BXP=/!PC1A_=6K]9;M^>AR/P ML^ 7P4^".B#P[\)OA;HF@6NT"1=/T]$>;'0R28WRM_M.2?>NH_L[3_\ GQA_ M[]"IJ*X)2E)W;NSP9SG5FY3;;?5ZLA_L[3_^?&'_ +]"C^SM/_Y\8?\ OT*F MHI$$/]G:?_SXP_\ ?H4?V=I__/C#_P!^A4U% $/]G:?_ ,^,/_?H4?V=I_\ MSXP_]^A4U% $/]G:?_SXP_\ ?H4?V=I__/C#_P!^A4U% $/]G:?_ ,^,/_?H M4?V=I_\ SXP_]^A4U% $/]G:?_SXP_\ ?H4?V=I__/C#_P!^A4U% $/]G:?_ M ,^,/_?H4?V=I_\ SXP_]^A4U% #8XHH5V0QJB^BK@4ZBB@ HHHH **** "B MBB@ KY-_X*@?\%B?V8O^"6VC:%I'Q*TS7?%_C[Q>67P;\-?!MJ+C5-3PVSS2 M"0(8=_R;SEF;<(TD*L!]95\A_LF? +X;^/O^"D?[2O[:?B[2;;5?&.@>+M*^ M'GA*]O$$KZ!H]KX;TF_FBMR?]2T]UJEP\FW!*A!G!;(!^2'Q]_:F_8*^.?Q> MD_:;_P""G_\ P:R?%_X?:%>WHN=:^)^GRZ[9I,68'[7=PQ6NFV]PQR&=GE=F M&>7S@_NQ^Q-J'[)FL?LK^"];_89L_#<'PIO='6?P?'X3LEM[(0,S;L1A5*2> M9O$@<"02AQ)\^ZO3[NTM;^UEL;ZVCF@FC:.:&5 R2(1@JP/!!!P0:^6/^"4?MS_ M /)H_CW_ + +_P#H:UW7PN_Y)GX=_P"P%:?^B4KA?VY_^31_'O\ V 7_ /0U MKNOA=_R3/P[_ -@*T_\ 1*4 ;M%%% !1110 4444 %%%% !1110 4444 %%% M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 M %%%% !1110 4444 %%%5=:US1?#6E3Z[XBUBUT^QM8R]S>7MPL44*CJS.Q M4>Y--)MV0FU%7>Q:HKX^_:,_X+=_L1_ S[1I/A+Q3=?$#6(LJMIX3C#VH;MN MNW(B*^\1D/M7S'/^W_\ \%/N'L%6^KT)/$5OY** M]I+[U[J\];^1^F/Q;^.WP9^ N@'Q/\9OB?HGAJRP3'+J^H)"9B.JQH3NE;_9 M0$^U?$/[0?\ P<&_ KPM&?V9OAKJ_CK4G?RK?4;]6L+%G)PI1"IGEY_A* M1YSPUU2Y(>\L-"NY+B:0]<27]V"S>A" MQ>N'[U]O?L^?L0?LJ_LN6T8^"GP6T?2KQ$VMK,L)N;]^.Y#[_B?JM&>?[;Q!S[^%"&!I/K+][5MY1^!>CU1^>O_".? M\%Q?^"C?S:Y?3_"[P=>]89#)H5N8SU'EKNOIU(Z!]R'CD9S5/]H/_@AO\&?V M?/V:M3\<>-OVNH;;QM&/,TV?6UAL=+O90"S6BQG?,\C=I YQC)CP3C];*_ C M]MW]J#QA^U?^T%KGQ#U_5II-+AO9;7PSI[.?+LK!7(C55Z!F #N?XF8GI@#N MP'$6:8BMR811H4XV?+"*U[)MZN_78^BX<\&LDXCKU/[4JU,1)+WJDYMM7Z02 MM&/=73M8R?\ @GK^R/\ #?\ :2_:!L?"'QZ^*VE>$_#UO(DEQ;W>I)#9D.X!O,7Y=HQD9*XEK9EG\E%(_%/ACP=I;ZYXN\1V&E64 M7^LO-2O$@B3ZNY 'YU^;?_"6_P#!=/\ :IXTCP[2U9W_V'@L-_OF+A'RC>;]--CZ8^*G_!5_\ 85^%/F6]S\:K?7[N M/.+/PK;/?[_I*@\G\Y!7SKXZ_P""]3Z_J7_"-_LW_LR:GJUY,2+2;7+O]XQ_ MZ];57+?A**]O^%?_ 1O_88^&GEW&I^ =0\5W<6"+GQ/JKR@GWBA\N)A[,AK MZ*\"?"_X:_"[3?['^&OP^T3P_:X -OHNEQ6J''J(U /XT>TRVE\,'-^;LOP# MZQPSA/X=&=9_WGRK[HZ_>?G3_P )W_P71_:IXT#PG/X TFY^\4L(=&$8/0AK MHM=X_P!PFKOA_P#X(??'/XJ:G'XF_:O_ &MIK^[ZRQV1N-3F;/4"XNV3:?\ M@#"OTFHH>95HZ4HJ'HM?O8GQ-BZ2MA*<**_NQ5_FW<^5?A7_ ,$:/V&?AKY= MQJ_@?4O%EW'@BX\3:L[KG_KE!Y43#V96KZ+\!?"GX8?"O3_[)^&7PZT/P];; M0&@T72H;56^HC49^IK?HKDJXBO6^.3?S/(Q.88[&/]_5E+U;M]VP4445B<84 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !5#Q-X4\+^--'E\.^,? M#=AJVGSC$]CJ=FD\,@_VD<%3^(J_10FT[H:;B[K<^4OC=_P1K_8K^+GG7_AW MPG>^"M1DR1<^%[O9"6[9MY0\07V0)]:^>+W_ ()=?\%$?V3+R37/V-/VDGU: MR1S(NDPZ@VG23'.1OMIV>UE^KOSZI0^&/VT_V8I+J,/Y8U,V,FE3S>KJX M5[>?H>(U4'GFOI+X(_\ !7K]B3XR^38WOQ#E\(:C+@?8?%]O]E0'O_I"EH , M_P!YU)]*^E=7T;2/$&FS:-KVE6U]9W";)[2\@66.1?1E8$$>Q%?-OQN_X)%? ML2?&?SKVV^'#^$=1ER?M_@^X^R*#V_TF0ZWX>U>UO[*X3=;W=E<++%*OJKJ M2&'T-6J_-#6O^"17[:O[-&IS>*OV+/VGY9T#^8=--[+I5Q-Z(RAGMY_^VA0' MTJ&S_P""GG_!1K]DBZCT7]LC]F]]8L8W"-JUQIYL))3T^6[MU>UD^BISZ\T? MV>JNN'J*7EL_N8?ZO1Q6N7XB%7^Z_=E]S_S/TUHKY/\ @C_P69_8N^+7DV'B M?Q-?^"=1DPIM_$UIM@+=\7$1>,+[R%/I7T_X7\7>%/'&C1>(_!7B?3M8T^<9 MAO\ 2[V.XAD_W7C)4_@:XJM"M0=JD6CQ<5@,;@9S-&BBBLCD"B MBB@ HHHH **CO+RTT^UDOK^ZC@@A0O--,X5$4#)8D\ =S7S+^T%_P %<_V- M?@1Y^EZ?XW?QEK$65_LWPDJW$8;_ &[DD0@9X.UF8?W:UI4:M:5J<6SJPN"Q M>-JG^&B]=4='\=_P#@ MNS\)M#NG\+_LS_#74_&>I2/Y5MJ.HQO:6;.3A2D6#/-S_"5B//!KS7_A5W_! M8G_@H-^]^(GB"?X=>$+SEK*Y9])@:(]5^S1YNIQCD"?*GCYJ^]?@1^Q]^S7^ MS5:)%\&_A'I.E7*IM?56A,][(,<[KB4M(0?[N[;SP!7I5'US#T/]WIZ]Y:O[ MMD/^V]+U2V3]#XO_9\_X(@_LM_"[R-7^+=_J'C[5(\,R7Q- MI8*P[B")MS?221U/]VOKWPAX*\'?#_0H?"_@3PIINBZ;;C$&GZ591V\,?T2, M!1^5:=%<=;$U\0[U)-GC8S,L=F$N;$5'+UV^2V7R04445B<04444 %%%% !1 M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %?F M[\<_^" VL_M,?M6?%?\ ::U?_@H1\<_ABOCOQ;!>V?AGX6^+1IUCY,.EV-F) MY5 ;S)G-LH?\%!_'_C74OA+>?LG_ (PW/Q2^+.D7FB^ M&TE!:+0[*5!#>Z]=X^Y;6<.E 'TK\=/V MP_VP_P#@G9X1^%O[1?[;7C;PCXA\%^-?%FG>'?BGI?A_PRVGCP%=:BC?9[NT MN#<2-=6<$X$$XG!D<.LJ%,&(]S^U7^VO\1(/VX/AU_P32_9AO=)LO'?C#PW> M>+?&?BO6-/-[%X5\-6S&(31VPDC$]UWEQX:1UD&U&\-_X.O+BSC_X M(H?$.RG0-<7GB/PY#8H!EFE_M:V;"CN=BOT]ZX7]DG2?%VC?\'0WCV#XHF7^ MU9/V,M&.FFZ))9%N]'CN2I/7_24GS[[O>@#ZO_9B_;/^(5O^W/X]_P"":'[3 MFIZ9J'C;PWX4L_&7@7Q;IFG&Q3Q3X;N)/L\CRVV]UANK:Z#0N8VV2J5D5(\, M@^A_B[\5/!'P,^%/B7XU?$O6%T_P[X1T&[UC7;YESY%I;0M-*^.Y"(Q ZD\5 M^<_QP74M2_X.R?@S%X<#-_9W[*6H3>(&B_AM&U#54C#X[>>T7![L/45[Q_P7 M^LO$M_\ \$:OVA(/"BRFZ7P%))*(0<_9DGA>Y_#R%ES[9H \SM?V^/V]K_\ MX)T2_P#!8.*P\,IX3337\70_ TZ$QN&\&)*2TC:KYVX:D;(&\#B/[..(3$?] M=7J7[7__ 5%T'X?_ _X(ZW^RG#I?B?QG^TUKVDZ3\'8M96064<-[''-)JMX MD;+(UO:P2+))$C*[,R1Y7<67B[2^\,V'_!LHE]"T1TN/]AG/;:R?\(?@@^YZ M8ZY/K7YW_LHZ)XSTSXJ_\$<[KXDI.-+?PEXP_LTW(.P3/"9+?&>A,3V6WU & M.E 'ZAS_ +7?QJ_9$_;G^&'['7[67CW2?&&@?''2M17X?>.[+P\NE3V6OZ>D M_]]+1_P )+J__ $*%[_WTM &Q16/_ M ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P ) M+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16 M/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_P MDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ M ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P ) M+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16 M/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_P MDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ M ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P ) M+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16 M/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_P MDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q17F7 MQF_:S^#W[/&CC7?C;XJT_P -0,A:%-4U&))IP.OE19,DI]D5C7QA\6MV?"?[+'P2U7Q;JL[^59ZAK!:VMGD/W3'!&&GFS_=/E&O5R_(\US1_[-2; M7?:/WNR_$^?SCBKA_(5;&XB,9?R[R?\ VZKR_"Q^CE>%?M&?\%)OV,_V7O/L M/B7\:-.FU>#(;P]H+?;K[>/X&CBR(3_UU*#WK\[/B1)_P5M_:]L/[7_:4^+M MG\&_!-ZI8V>OZM'X=MFA/5/LVX7,X]!.2#Q\WI1^&GP9_P"".O[-S1ZC\9OB M;K_Q@URW^9['2K62'3MPZ%4B(5^>SW#*>ZXKW:?#^4X+7&XAU)?R45S/YS?N MKS1XN'S;CCB9\N099*,'_P O:Z<5ZJ$;R:[.]NZ/4/'O_!<;]IG]HCQ%+\-_ MV ?V7+^:YD^5-2U"Q?4KU4/23[/!^YM\=VD>5.N:S]%_X)-?\%'OVUM5@\8? MMY?M)3Z+8M()5T6:\&H3P]R([6!DM+?(XRK$CNG&*Z6T_P""UOPV\!:5%\-? MV/?V*8[*USBPL]\5HF<=?LEG$V\GOB3/N:9-^TA_P7"_:-&/AW\&;CP;93_= MDA\-1V \L]Q)J;,QXYW)@GMZ5U_VG4P,;9=AX8=?SS:E/[W>WI8]FGX/9UF= MJO$^.W 8ZUXU M=;TJPYW+"5$"8/((CW#CYCC->F?$/]M/]D'X+P&R\;?M >$]/:U79_9UKJ27 M$\2@8 \B#?( ,8 V]J^$)?\ @EI_P4+^/<@G_:;_ &F;[[-,%_+N?B++XV\4SK_K(?MD-C;/\ \ B4R#_O[7SV M+K0Q53VF,Q,JDOF_N;T^X^UR[AG@[(*/LJ55)?RTH6O_ -O/1OS>IT?Q+_X+ MK?LA>$O,MO .A>*?%X99!_P!^S7DUQ_P6,_;5^.D[Z?\ MLK_L>!T=BBW L;W67C_VMT*Q1H?]X$#OZU]<_#3]B_\ 9-^$?ER>!_V1-$BF MAQY5YJ%DE]<(?42W)D<'W!KUJWUV_M($MK7P3=11QJ%CCCV*J@= .@KD^L9 M?3^"DY>&CX0^+WP M/M_$.G;]Z6^IV\Z@N7Y^?S/YZJ_87_@BE^RYXM^!'P!U;XC_ ! T>73]5\=WD%Q;V-Q&5EBL M(4<0,X/*LYEE?:?X2AZG ](^&W[ O[''PE\2Q>+_ 1^R5:1:C!()+>XU"YF MOO)<SIII/>Y?$/%= M/-,+]6P\&HNUV[7=M;63?7S-BBL?_A)=7_Z%"]_[Z6C_ (275_\ H4+W_OI: M\4^)-BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z M6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK' M_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)= M7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6LKQ)\7] \&Q>?XO-OI28SOU+4H( M!CUR["@3E&*NV=;17AGBC_@HU^R'X/++KGQT\)[T^_%9^)+:Y=?8K"SD'VQ7 MG?B3_@M=^PKX?+):^-]2U21.J:;HER>?9I(T4_@<52C)]#BJYIEM'^)6BO\ MMY?YGUO7PU_P6@_;$_:-_9-_X5M_PS_\1?[ _M_^V/[7_P")19W7G^1]A\K_ M (^89-NWSI/NXSNYS@8IZ]_P7W_9WCW1^"O@EXYU=QT:6&V@1C[$2NWYK7Q] M_P %&/VVO$O_ 4#NO""Z3\ =1\,0>$_[0\N2YU,W+7?VK[-U'DQB/;]G]6S MO[8YPJ8S!825\15C!?WI)?FSS\PJXS-LMG3RB%2K4=N7V4*DG\2O9QB^E^IC M?\/B/^"C?_1Q7_EHZ1_\B4?\/B/^"C?_ $<5_P"6CI'_ ,B5Y;\/?A5C=+0_H_HK\V]!_X+W>.[ "+QY^QGIBAM9T7ZDRHW_CM>W0Q.&Q2O0J1 MG_ADG^3/3Q..I8%VQ<9TG_T\ISA_Z5%'WE17R-X<_P""V7["NO;5O/&FJ:6[ M=$U'0[G@^YBC=1^>*] \-?\ !2C]CKQ85&D?';PJA?[JW_B""T)/IB=D.?:N MAQDNA%/-,LK?!6@_^WE_F>\T5Q?ACXY>#O&P4^#-1L-7#?=.F:Q;W&?IL"/:LO_A) M=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@-CP[XW?\ !*[]B7XX^=>:E\(X/#VHS9)U M3PC)]@<$]6\I08&)/.6C)_,U\O\ BG_@C#^TO\"-9E\:_L6?M1W,,ZGFOZ6/S?3_@H%_P5._8T=;']J_X M!MXET>W(675[S3A#D#@!;ZR#6^O=O@C_P %M/V/?B=Y.G^/Y]6\ M#:A)A676;0SVA8]EG@W8'^U(D8KZHD\1:I*C12^#;ME8$,K%2"/0UX5\;O\ M@GS^R-\>O.O/%?[,T>FZC-DG5_#;+I]QN/\ &WDX21O>17K;ZQ@:W\6GROO' M_)Z'7_:.18W_ 'K#>SE_-3=O_)7H>!_MY_\ !:6'X=>(G^&'[(DFC:W<10HV MH>,IF%U:(S*&$=JJG;*P!&Z1B5!RNTD$CYR^&W_!;/\ ;>\(>)8M4\;^(]'\ M6Z=Y@^T:7J&B6]KE.X22U2-D;'0MO [@]*^3O$&B:AX:UZ]\.:M:O!=Z?=RV MUU#(,-'(C%64^X((JI7T=++<'"ER\J?F]_Z]#](PG#>2T,*J7LE/3635V_._ M3Y6/W+\*?\%2_P!C76?@;IGQM\3_ !8L-"6^B83>'KJ7SM2@N$X>'[/$&D< MXPX7:0RG(SQ\Y?%7_@N'XL\>ZZ?AY^Q3^SUJ6MZG<$I:7VLVDD\TAZ9CLK8E MCZ@M)Z93M7A'_!*+]A?X6_M52>)_'/QG\,:YJNE>'[NTM["QTV^^SP74KK*\ MJS,H\P[5$6 CH?G.3TK]2_A5\-OAO\#M"'AOX0_ BS\.V9 $D>EV<433$=&D M5SDN[LE_F?!YA1X>R3&3I>SE5FGLW:*OJEIJ[)Z MWT/@:T_8%_X*=_MT74>N?M>?&F7PMH,KB1='O9A(R#.04T^U*PJ1TS(ROTSF MOIK]GS_@D/\ L;? KR-4U3P7)XTUB+#'4?%K+<1AN^RV $(&>FY78?WJ^B?^ M$EU?_H4+W_OI:/\ A)=7_P"A0O?^^EKEJYAB:D>6+Y8]EH>5BN(_\ ?2UPGA[FQ16/_P )+J__ $*%[_WTM'_"2ZO_ M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P ) M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM97B3X MNZ#X.A^T>+_L^E1XSOU+4H(!CUR["@3E&*NV=;17AGBC_@HU^R'X.++KGQT\ M*;T^_%9^)+:Y=?8K"SD'VQ7G?B7_ (+7_L*^'RR6GC;4M5D3JFFZ)]_P""_/Q \6W+:=\(_P!CI[F;HAGU^6[8^F8X;92/IN-5 M[*?8\^IQ/D=-V]M=^2;_ "1Z5_P6@_;$_:-_9-_X5M_PS_\ $7^P/[?_ +8_ MM?\ XE%G=>?Y'V'RO^/F&3;M\Z3[N,[N$;G]H+X!MX/MM(%^?#J0^'[ZU M-X)OLWG$M"SI>A3ZAK%D5FOP4,4J8*Q=,$'IGD M_3%?.<5<3X+A7*'B:B4IW24;J[;>OW*[^5NIU\#\&\0^*/'+P&!K5:.&Y7*5 M3WE&"C!)::*\IM*V^K?1GH7_ ^(_P""C?\ T<5_Y:.D?_(E?N77\U_C'P[+ MX6\0W&D."45MT#'^*,\J?Z?4&OZ./^$EU?\ Z%"]_P"^EKW:6)PV-PE/$T'> M$TI)]TTFCQ^'\/G.79ICLOS-R]K0FH24FWRRBYJ5K^:W6^C-BBL?_A)=7_Z% M"]_[Z6C_ (275_\ H4+W_OI:H^K-BBL?_A)=7_Z%"]_[Z6C_ (275_\ H4+W M_OI: -BBL?\ X275_P#H4+W_ +Z6C_A)=7_Z%"]_[Z6@#8HK'_X275_^A0O? M^^EH_P"$EU?_ *%"]_[Z6@#8HJOIMY/?6HGN+"2V8L1Y4I&?KQ5B@ HHHH * M*** "BBB@ HHHH **** "JNNG6QHEX?#*6K:D+63^SUOF80&?:?+$A0%@F[& M2 3C..:M44 ?FQX0_84_X+\^!_B%XM^*6A?\% O@,VN^,]1%QJVHWWPMN[B5 M+>/<+:PA9Y28K2W5W$<*\ R2R-NEEED?WS4O^"=_C?\ :?\ ^"=?BC]C7_@H M_P#&[_A8OB;QV;J?Q)XNT33UL8+"Y\\26#Z=;XVVZVJPVI5<8>2.1WW&5\_5 M=% 'QOXW_8&_:7_:ZMOA1\-/V\OB)X+U;P3\*/$EAXBU!/"<-V;OX@ZO81LE MG/?QW"K'I]N'8SRVJ-=>;)M'FHBX;N/VIOV(O$/CW]J;X<_M[?L\Z[I&E?%/ MX>:=>:''KL$RZ9=2PJTMN8YC]H@G1)/+DW;HI%?"_2%% 'SC^ MR]^Q'K_@7]J7X@?M[?M#:_I&K_%3X@:19Z#;VWA^.3^S?"WA^U(:/3+228"6 MX,DW[^>X=8_,DV[8HE3!T_V=O@1^U;J'@GXM?#?_ (*%?&#PI\3]"\:>*]6A M\*Z9I'AQ;&*Q\*74?E)IER$1/-;8TBL3YC88YFDR-OO=% 'P9!_P2V_:9C_8 MD;_@E*WQU\/CX([FTH>. MP?%I\*&Y\X:)]G*?91-Y1^Q_;_ #"/(Y^R[^:] M@_;#_P""ZN8H7GN)(HTBCB$*) H8[I7(=?J&BB@ HH MHH \H_;G_P"31_'O_8!?_P!#6NZ^%W_),_#O_8"M/_1*5PO[<_\ R:/X]_[ M+_\ H:UW7PN_Y)GX=_[ 5I_Z)2@#=HHHH **** "BBB@ HHHH **** "BBB@ M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BO._VI/VEOA]^R9\ M'-1^,?Q%DD>WM2L-C86Y'G7]T^?+@CSQDX))Z*JLQZ5^5?Q*_P""VG[;OB_Q M++JG@?Q'H_A+3O,)M]+T_1+>ZPG8/)=)(SMCJ5V ]@.E=V%R_$8Q.4-N[/%=,*6(7:"03]K_ !#^.'P9^$D!N/BC M\5_#GAY0NX+K.LP6[,/]E78%C[ $FLJ^$KX>K[.:U\NIRX[*<=E^*^KU8>]T MMK==T=317RM\2_\ @LO^PG\/?,ATOQ]J?BBXCSNM_#>BR."?023^5&WU#D5\ M]_$[_@X.,:R6_P (OV>$0#/E:AXGUK\LP0J/_1M:TLMQU9VC!_/3\S>CP_G% M:'/[)QBMW*T4EW]ZQ^EM9_BCQ7X6\$:'/XG\:>)=/TC3;5=UUJ&J7B6\$*^K M22$*H^IK\@+7_@IU_P %//VMM?D\(_ IKDRR'$UEX \+!UA!Z%[B02M O^TT MBCWKT'PE_P $K:I-KNHP[D!8,/[T0BK[=^&G_!"W]CSPB([CQYJOBCQ9., M>;%>ZF+2W8^R6RI(H_[:&OH/X:_L7?LG_"#RY/A[^SYX5L9XL>7>OI,<]RO_ M &WF#2?^/5UT,RRC+]:-#GEWFK_@_=_\EOYGGXO)N',1IB<1B*J_E@U0@_G' M][Z^_;R/PF\$_LR_M(_M$^(6\5Z5\-_&WCR\NY0]UJ;V-U,XJS/&1Y9/W>W3[E9?@++,-PQD$^?*;^ M6GY'J8CB'.<4K3K-+LO=7_DMC#\$?#+X;_#2Q_LOX<_#_1- MMH'V?1=*AM4 M(^D2J*W***Y&VW=GD2E*",L[L%1 M0.23P!6D(Q:;D[)'RO$>>8O*IT886,9.=U9IMZ$+.W4"8=0/8]OH:^ MJ?\ @DS^VY\-?V)[7XA3_$[P7XLU23Q-_9/]EP>&]*29)8PH_?I MCDYY]*\[!9KE699='&X>JG3E>S;2V=GOZ'7BGQ=DO%;R/-\,H5(6]UT[K<_9:BO@3Q#_P74T[YAX#_ &1O$E]_<.M:]!8?F%27%<+XA_X+ M5_M8:GN_X0W]GSP3I&?N?VSJ=S>[?KY+19KAQ'$O#N%_BXRDO+VD;__^"AOQ68H/VG/B!?,YP5\+VIM#]!]D5)6(CSK*IPCWJ5*%-+Y2J\W_DI^S%)_#WQ=U]9> MK^(;J\V/G_:GV@C\:Z'PO_P1V_:/U+:\GP1MK)&Z2ZIXAM_U59F8?]\UE_KW M@ZO^[8/$U?\ #2=OO;7Y&W_$,^)*?^]XS X?RJ8J\O\ P&%.5_\ P(_0WQ5_ MP4E_82\&[O[7_:A\*S;.O]E7AO\ \OLRR9_"O-_$W_!;;]@S1&9-#\6>(O$! M'0:1X8G4M]/M/E?K7@/A?_@B9\9'VRZIJG@33%[A&FFE'Y0 ?^/5Z)X;_P"" M*K1*I\1_'R*)1]Z#3?#>1^#M./\ T&C_ %FXEK_[MD\W_CJ0A^#3%_J/D5'_ M 'WB2A#RI8>M6^Y\\5\[#?$/_!>7X7?-_P *_P#V9/'>J#^!M3,%F#]2C38K MA/$/_!V@0_4>2Q_\>KMM _X)?\ [&VB[6N_AW>:DZ]'O]=NOU$;HI_*CZYX MAXC^'A%^'_P!XS7&UO^O5*C3O_P"#%)_B?#/B'_@K5_P4 M4\3[AIA\ ^' ?N_8-'DD9?\ O_),":X7Q!^VK_P4/\:$KK_[6VI6H?\ @T72 M[:TQ[ P1QG\>M?JMH'[&G[*GAK:=,^ 'A=BOW6O=*2Y(]\S!C7;:#X#\#>%@ M!X8\&:3IH7[OV#3HH!/VROC%_R%_B9\8/%:R]4CN]0N5;V RXQ["M'P]_P2Y_:(\32 M_:$^ 7BJ:20Y9]7<6I8^I,K1_K7[544?ZK9[7_WG-ZS_ ,"C3_),%Q#P)A7? M!\-X;_N,ZE?[^=ZGY,^%_P#@C'^T1>[?MGPST#2\]?[4UV.7;]?*,M>C^%_^ M")?Q*3:=<\>>#=-'?^S;.:[ZY'\2:?H*08]@7ED_E7D M'_!03_@G#XR^ O@S1?&?[,\&H:UIEM%>R^.=5\0ZM8QKIZ*;<6QC1C$S[BTX MVH)&)50 "0&_3VBMZ? '">'IM4<+#FL[.7--)]&U*6MNUU*F\/\ P?\ C_\ M&OQC:>#?V>]'AU75I+>21]*FOK2WWH@R65[EXP2!G*ALX&0, D?NI17R.4>$ MU++3:>]SY1U_P#X(^_LUZENDT3Q9XMTUS]U5OX)8Q^#P[C_ M -]5P_B'_@BSI6$ MBO\ "Y1_]):/A<+XL>(6$5HX^4E_>C"?_I46?FKXH_X(E_%?YGT;Q3X'U,#M M>PS0.?I^Y<9_$5YSXH_X(V?M&6 8VWP@TK4@/XM+\00Q_B!))&?PQ7ZX45SK M@'+:7^ZXFO1_P59+\[E5?$G'8W_D8Y?@\3W]KAH2O]W*?B1XG_X)A_'OP^6: M\^ /C*/9SNTRU:[ ]\Q"2L3_ (5U^T[\'O\ D#?$[XF>$?*Z?Z5>VFS'^ZT> M*_=*BJ_U8XAH?[MF]5?XXPJ?G8XI9YX?8MWQG#6'_P"X,ZE#[N1Z'XEZ!^UI M_P %"/!NW_A'?VOM>N=GW?[99;O/U^T++G\:[?0/^"J7_!2WPQM&H^+/"GB+ M;U_M#0H4W_7R!#_2OU>U_P"%/PN\5[O^$H^&V@:EN^]]OT>";/UWJ:XG7_V' M?V2/$N[^T?@'X>CW=?[/M3:?EY!3%'U+Q"P_P8RC5_QTG'_TAD^R\'\3O@L9 MAO\ KUB7.WI[6_XGP;H'_!%-2 ^\=(N;BW+?G+/BNWT#_@ MOUI$>T?$#]D7Q%IN/OOI^N+ZQN_L_P ):MI6 M>GV#79FQ]/.,E<1X@_X(U_!6ZW'PQ\5?%%D3]T7R6]R!_P!\QQ_SH^O^(.'_ M (F#H5?\%24?_2P_U<\,\1_NN=8RA_U^HTJOW^S469OAC_@O'^Q9K3+%KVA> M.-$?I(;[1(9$4^QAG=B/^ CZ5Z-X7_X*V_\ !/GQ7M2U_:%M;.1NL>J:/>VV MWZM)"$_)J\1\3?\ !%'6)5;^P/CEIUZ/X8]3\.M%CV)663^5><>*/^"*'QQM MMSZ?;^!M47^'[+=R0R'Z[X% _P"^C1_K1Q!0_P!YR>HO\$X5/RL'^H66U?\ M<>)<-4_Z_4*M'\>:7Y'WYX6_;%_9-\:[5\+?M+>!;R1ND$?BJT$O_?LR!A^5 M=_I6M:-KUJ+[0]6M;V$])K2=9%/XJ2*_'[Q3_P $A?VC]'W22? .:=!_RUTO M78)<_1!,6_\ ':X#5?V _CQX"NCJ$?PI^(>CR1]+NVTJ?:O_ &T2/'_CU'^O MN6TO]YPN(I?XZ+M^#8?\0QXQG_NF)P.)_P"O6*2?W3@M?*Y^Y-%?AE9^*_VP M/AA.MIH7[4GQ%T5D^[97.M7B)QZQM*%/_?-=;H'[>7_!2KPAM72?VG1?Q+UB MU?2K2X+CT+26[-^3#ZUO1\0.#:[Y5BU%]I1G'\XI'-B?#?Q0P<>:KDU22[TZ ME&I?TY:E_P #]H**_);0/^"P7_!1/PWM75_"W@3Q H^^UUICQLP]O*N(@#^' MX5V_A_\ X+O_ !QTK:/'?[']G?\ ]]M&UV:W_$!H9ORS^->SA^(,@Q7\'%TI M>E2-_NO<^;Q65<1Y?KC,LQ5)=Y8>K;[U%K\3QG_@HF__ 3[^.'C^_\ CO\ MLU?M.Z?::SJTAGU_PYJ7A76(8;NX/WIX)!9D([GED?"LQ+;@20?F;X;>%/ 7 MB_Q+%I?C?XSZ/X2T[S!]HU34-,O[K"=RD=K;R,[8Z!M@/ +.W99ARP^A[?0U]!_K3A<'B*& M!=5.=7FY.M^57>NVVU]SS[M)KBZNO,Q/)]H MAC#%_(< )D(L:J>@S](5^(G_ 37_;[_ .&$[7QN[?!C4/%L_BO^S?LT=MJ/ MV5(/LWVK.YO*D)W?:!C XVFO>/$7_!=;]IW5MW_"!_LK:%IN?N?VS>7-UCZ[ M?(S^E<&,S# X>HY5Z\8_XI17YM')E&99KGN'C7EAZM6M.[:ITJD^KMM&6ZMU M/U#HK\@?$7_!67_@I;XH+?V9>>%?#@;H=.T6!]OT^T/-^M<)XB_:]_X*-^-< MGQ!^UCJUL'^]_9$ZV1'_ (#11X_"O"K\8<*8;X\=3^4E+_TFY]9A>$N/\=_N M^28I_P".G[-?^5'$_;FN>\5?%OX4^!-W_";_ !-\/:-L^_\ VKK4%OM^OF., M5^&.L:3\>/B7,+?QE^T!XO\ $$LH^>&\U*ZNF;_ON5B?RK2\-_L#?$[Q-&AT M/X2^.]1)ZR6FAS&,_B(3@?C7F/Q$X3D[4:LZK[0IS?YQ1[$?"WQ5<>:MEU.@ MGUJXFBOPC*3/UR\5_P#!1W]A;P;N_MC]J+PE+L^]_96H_;OR^S"3/X5YIXJ_ MX+:_L"^'=W]D^.-=UTKT&E>&KA=WT^TB*OAWPU_P2A_:&UR!8[3]F_4\G'[[ M4]32U;\1),@_2O1?"W_!&G]H>[MQ;77@GP;IBGJ=5OHYF'_ HXY3^M+_ %W5 M7_=LMQ4_-TU%?>V'_$,^(J?^^YSEM%=E5G4FODHI?B>I>*O^#@_]G^RW#P3\ M"_&&HD?=.IW%K9AO^^'FQ7#:M_P7K^-_BB%I_A7^Q];K'R$FN]4N;\?CY,,7 MY9KK?"/_ 1D^*EC +74OC'X>TJ+^*/2+.>91^!$6:[70O\ @B_X-@(;Q1\= M]4N_[PL-%CM_U>22G_K%Q;7_ (&3M+O.M!?^2VN+_4+AFC_OO%:_PT<))_=- MNWX'S-JW_!7W_@I)XX$@\.^%/!OAW!( CTI877\+ZX;)_#\*XC6/VU_^"F/C MR22'Q+^U*=%YP%LTM[< >S6%NW\\U^@>@_\ !(G]EO2L-JFK>*]3;^(76JQ( MI^@BA4C\Z[30?^";_P"QIH&'B^#D5U(.LE_JUW-G_@+2[?TH^L^(U?X*.&I+ M^\ZDG_Y+H+_5CP@H?[SF&8XA_P!SV5.+]4U?\3\D=;U3]HKQO,\/Q2_:^\7Z MG&__ #QU>^O4QZ;;B6''T Q6!9? 3P++J.=1\0>(-;DF?GR(8K.1C^)N-QK] MP=!_98_9J\,[6T7X"^$8G7[LK>'[=Y!_P-T+?K78Z1X=\/\ A^+R-!T*SL4Q MC99VJ1#'T4"C^SN/\1_$S*G3_P %%2_]*8UA?!/"N\$/V:/'&O!B,+?1W=RGYVD,! ^IKTGPO\ \$]?CY?,LGA+]BBS ML)&Z/JD3-S[KJ5RZC\L5^O-%2^%,YK_[SF]=_P"#EI_DF=M+B7@G ?[APU@X M]O:1E6_]*:/S0\+?\$V_VTG*O9>#O _A:0_\MK6UTVUD'U>R@+?K7>V/_!,' M]K?7[=+/QW^U+"D&,&*'5+^\51["3RQ7WE14_P#$/LGJ_P"\UJU7_'5D_P K M'H4_%7/<(K9?A<-AO^O6'A&WW\Q^4_[:W[ 'Q%_96\-:%XXT'Q1#XJTJ]NY8 M?$>I3Q16/]G/F+R%2-YVDN6DW3?_\.T?V)?\ HBO_ )$R[+I_P"L M%2OB,1.5_=IT5"$4DE&-I4^SDVU>[M>R1^0NN_ [QE\=/$.D^$?AII$5]XAO M+K[/86WU^@\$Y/G>09/]0S"<)J#;@XN3LGJ MT[QCL]5OO;HC\?\ $;-^%>)>*:F=Y/3J4YUXQ55344G*%U&2Y92U<6E*]OA3 MW;"BBBOL#X4**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH * M*** "BBB@ HHHH **** "BBB@ HHHH **** /*/VY_\ DT?Q[_V 7_\ 0UKN MOA=_R3/P[_V K3_T2E<+^W/_ ,FC^/?^P"__ *&M=U\+O^29^'?^P%:?^B4H M W:*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **Q_%7Q"\ M^!8/M/C?QQH^C1XSYFJZG%;KCUS(PKROQE_P4=_89\";AKG[3?A>8I]X:1=M MJ!_*U63-:0I5:GPQ;]$=%'"8K$?PJB;_(]LHKX\\9?\%Q?V'_ UO70;C MQ9XA(^X=*T#RU;_P*DA('X?A7E?BG_@X%\/S3_8/AE^S!J>H2RMM@;5/$"0L M3V_=Q0R%OH&'UKIAEV.GM!_/3\SU*/#>>5OAH->MH_FT?HO17Y8>+/\ @L?^ MWUKGR>%_@'X=\-6L@REYJFDW7R_]MKB:.$?BM><>)_V^/^"A/C4LOB;]LWP1 MX;M'_AT[Q3H:&/U&+'S;@$>_-=M+(:UO/SV>EVWB35BH] )[>"$_17Q[UFZ9X?_ &!-)(75_%?QO\6R'DMH M'@>PTR-O^!7-W,P_[X-:5,ECAE?$5.3U7+^,FD4>,O^"['[&OA[=% MX:T/QGK\@^X]GH\4,1^IGF1@/^ FO@K2_B'^Q%X9P-!_X)X>/O%97_5R^,?B M4UCGW9;.W4?AT-='I?[9(\+8?X5?\$Q?@SI;I_J9_$T;ZM)'[[I'1L^X(KSZ MN+X4PG\?&T5_BQ%%?@IM_@>K0CEM;_<\KS#$O^[A*ZC]_LU^9'_P4B_X*267 M[\ M?M)_&?\ :._:W_L&'XD^$_ F@VOAL77]E6/A/3&LX4^T>5YFX;Y"W^HCQSQS MZUY9=_"7QG;2!(K6"<'J\-P !_WUM/Z4L)QWP/2F\-''T5;_ *>+E?7XG9?U MH?K7"&5\18S+9)Y/B,+&#TC4A+FDGK?OO>Z>RMWLN=@N9[.=+NUG>*6)P\]=/XKO\ X+3:[_PB_P (KCQG\1M8<>YR /UKZE^"7Q/_:F^#FE'1OV M;/A7I'A9)(]DEQX6^&:2W,P[>9/<+/++C_;9JXY>,'A]@J\X.I*O*-K*$9\M M];WDHN_2W*[/6YXO'O OC3F=>C0R"V$H<-_LS&/ZU]Q_L[ M_P#!"+]C_P"$K0:U\69M4^(^L189GUN4V]@''=;6)LD?[,LD@/I7BS?$/_@K MIXUY.N?%#:_1K;P7;V2?@T=FG\ZC?X'?\%7/&G_'WXD^+&'ZH_CB2P4\="%G MC'X5Y6,\:)XM.&$PU>,>U*@U?_MYM2?WZ]C\^I> F:SFJN=8^C7J;\V+QBFD M_*"YX*W2T7;HS]-/"'@KP=\/M @\*> O">FZ)I=L,6VG:18QVT$0_P!F.,!1 M^ JQJNO:'H47GZWK5I9I_?NKE8Q^;$5^8#?\$VOV^/%Y_P"*KAU5]WWO[;^( M9N?;G%Q)FI],_P""*GQZU&7[1J,7@2V=CEWO;Z65OS6W?)_&OFY<9XZO*]/* M\2V_YH*/YR9]+'PZP^&BHULYP,4OY*LYV]$J2/T*UO\ :>_9J\,Y_P"$C_:& M\#:?CK]N\6V<6/\ OJ05R&L?\%%?V&]$)6[_ &H?",Q'46&IBZ_]$AJ^3M&_ MX(E_$%,?VE\2/"5IZ_8M.EEQ^:I76:3_ ,$54C .K?M#!1WBM/"V/_'FN?Z4 MO]8^*ZG\')Y?]O5J4,-6J?BIQ/7=6_X*T_L&Z9E+;X MQ7E_(.D>G>$M3ES]&^S!?UKF=6_X+/?LEV&?[,\,^/\ 4\=/LGA81[OIY\L= M9FE_\$9OA+%C^VOC!XCN/[WV6U@AS_WTKUT6E_\ !(3]ENPP;W7?&%Z>XN-5 M@4'_ +]P+_.C^TN/JOP8"E#_ !5;_P#I*%_87AK1_BYQ6J?]>\-R_P#IF=@CS^EP,D M9_T!-!,&<^GD6XQ^%?KC%%%!&(H8U11T55P! M3J/]7>+*G\;.)?\ ;M&G'\@_U@\.J7\#A]?]OXO$5/P;L?D0_P "?^"E7C?C M5]=^/%XK_P#+/4M>U"%.G]UV0#\A3&_X)B_MD^.#G7_A;X@U /\ >;6_&$?T MR1+P/_<2DZO_ *5(_)S1 M?^",/[0USC[1\.?#MEG_ )_=<1\?]\%Z^9/!%WX'\1-)>>'?"D< M74"X>RC M3YO12"3D=?Q%?O\ 5\_:+_P2T_80\/6(TW1O@2(80Q;8/$VIMR>I)-R2:\C/ M/#ZMBWUKVS_@E[ M^S=X-_;EU#QU%\2M0U;14\(MIJPPZ//&'F-R;L.':6-@-OV<8P/XC7WQ_P . MT?V)?^B*_P#ER:E_\DUV'P&_9+_9]_9COM=U+X'?#X:'-XE:W;6W&J75Q]I, M'F>4<3RN$QYTGW<9W9PIX81R^I5_MJG2K)IUC*%)*<7'W6I)SDI1DME9--MNZ2?F6@?\$H_V M1='V_P!HZ-KNJXZ_;];==WU\@1UVV@?L&?L@>&MO]G? ?1I-O3^T#+=_GY[O MFO7:*_1,/POPWA?X6#IKSY(M_>U<_*L7QOQCCOXV85FNWM)I?(C_ +Y05TR(D:".- JJ,*JC I:*]FE0HT( M\M.*BO))?D?.U\3B<5+FK3:3_,Z<-C<9@Y7H5)0?]UM?DSQ77_\ @G?^QOXCW-=_!*S@ M8]&T^_N;;'T$P!]OYBNFG#>4S1PK(Z@F-&. 6QQSV^M?JUHO_ 2T M_80\/6(TW1O@2(80Q;8/$VIMR>I)-R2:M_\ #M']B7_HBO\ Y M>%69XO-ZE;+_ &-*C?W8\U2]EW]QZO=I/2]DS]OX-\<5PF/.D^[ MC.[G.!CT:OTG"<"<*4*<6\%#FLKI\TU>VMG-MM7VNOD?CD_$[Q$K0E"MFE2> MLK22C3;CS/E;5-))\MKI72=[-[OQ30?^"=?[&OA[#6OP4M)W'5[_ %&ZN,_A M)*5_(5V>@_LS_LZ^&,'0?@5X1MG7I*GAZW,G_?932X7^#AJ< M?2$5^2/"Q7$W$F._WC&U9_XJDW^;*^FZ/I.C0?9='TNVM(O^>=M L:_DH%6* M**]-1459+0\24I3E>3NPHHHIB"BBB@ HHHH **** "BBB@ HHHH **** "BB MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** M /BG]OG]N?\ :Y_9G_;V_9G_ &??!WA'P/%\._C+\0)M%U?69[FYNM89(+>. M5D6(I'#:AC(1N#3L1'GY-V![-_P4:_;C\ _\$YOV._&'[6?C_29=4C\/6L<> MD:%;2[)=7U*>18;6T1L';OE==S!6V('?:=N*^7?^"R/_ "D3_P""?O\ V7+4 M_P#T@CKE?^#K.SU"Y_8;^$=P0W]CVO[3GA67Q,V/D6Q,&H(2_P#L^:T/7N10 M!ZO\=/VP_P!L/_@G9X1^%O[1?[;7C;PCXA\%^-?%FG>'?BGI?A_PRVGCP%=: MBC?9[NTN#<2-=6<$X$$XG!D<.LJ%,&(]S^U7^VO\1(/VX/AU_P $TOV8;W2; M+QWXP\-WGBWQGXKUC3S>Q>%?#5LQB$T=L)(Q/=7-P/(BWMY<>&D=9!M1O#?^ M#KRXLX_^"*'Q#LIT#7%YXC\.0V* 99I?[6MFPH[G8K]/>N%_9)TGQ=HW_!T- MX]@^*)E_M63]C+1CIINB261;O1X[DJ3U_P!)2?/ON]Z /J_]F+]L_P"(5O\ MMS^/?^":'[3FIZ9J'C;PWX4L_&7@7Q;IFG&Q3Q3X;N)/L\CRVV]UANK:Z#0N M8VV2J5D5(\,@^A_B[\5/!'P,^%/B7XU?$O6%T_P[X1T&[UC7;YESY%I;0M-* M^.Y"(Q ZD\5^<_QP74M2_P"#LGX,Q>' S?V=^REJ$WB!HOX;1M0U5(P^.WGM M%P>[#U%>\?\ !?ZR\2W_ /P1J_:$@\*+*;I? 4DDHA!S]F2>%[G\/(67/MF@ M#S.U_;X_;VO_ /@G1+_P6#BL/#*>$TTU_%T/P-.A,;AO!B2DM(VJ^=N&I&R! MO XC^SCB$Q'_ %U>I?M?_P#!470?A_\ _X(ZW^RG#I?B?QG^TUKVDZ3\'8M M96064<-[''-)JMXD;+(UO:P2+))$C*[,R1Y7<67B[2^\,V'_ ;*)?0M$=+C M_89SVVLG_"'X(/N>F.N3ZU^=_P"RCHGC/3/BK_P1SNOB2DXTM_"7C#^S3<@[ M!,\)DM\9Z$Q/9;?4 8Z4 ?J'/^UW\:OV1/VY_AA^QU^UEX]TGQAH'QQTK45^ M'WCNR\/+I4]EK^GI'+<:9=0I*\30S0RHUO(-KAU:)A+D2#Z]K\Q?^"_"ZG?? MMJ_\$]M&\-!CJK_M16-R@C^]]CAGL6NSQSM$1RWM7Z=4 %%%% 'E'[<__)H_ MCW_L O\ ^AK7=?"[_DF?AW_L!6G_ *)2N%_;G_Y-'\>_]@%__0UKI/AKXBU6 M+X_P#?2T?\)+J__0H7O_?2T ;%%8__ DNK_\ M0H7O_?2T?\)+J_\ T*%[_P!]+0!L45C_ /"2ZO\ ]"A>_P#?2T?\)+J__0H7 MO_?2T ?BG!_P5^_X*-.H>3]HK@] /".C_P#R)4C?\%?/^"BI&!^T20?7_A$M M(_\ D2OFL8QQTHK[:EE^#A247!/SL?KN3\'Y-@*[?]N\W_ M (]H8]V[R8_O9QMXQDY^UM>\3^&O"MI_:'BCQ#8Z;;CK/?W:0I_WTY K\*?V M-O@3^V)\=(_$NE?LJ:]K%G:VOV+_ (2A-,\2FP20/Y_V?S5$B>=C;/CAMN6Z M;N?;K?\ X(D?M=^)G_MGQ=XRT7[5+S*MY?SR2_BXC<'\Z^7Q\(E&D M:A^C/C+]OK]BWP%O M7Q%^TWX.WQ_ZR'3]9CO)%/H4MR[ ^V,UY/XR_P""U_["'A?>-'\6^(/$)7MH MWAR5-WT-UY(KYK\*?\$)/%K8/C/XB+ ?XOL-BUP/U:&NW\/_ /!#[P+ILP;5 M_&VI72#JL/AU$)_&2YD'Z5Y%3,Z$-*6#K5/.]*"_&IS?^2GJ4,5PU M,VX@EIALMI1\ZE>3_P#)84W^9ZE&?A+@]9SK5/\ #3_^3JI?^2GP)XI_X*:_ M\%,/'(9(/B6FBV[]8=+T>Q@Q]'=&E'X-7F_BOXI?MF_$96_X3C]I'Q/>1R?? MM;GQ5=F(?2-3L'X"OUIT3]B+]E#P_();#]EN&0CH+Z\FN1^4TK UU6F_ ?X" MZ0%_LW]E+PQ$R?==?#=GN_[Z*9_6N*>*\0ZK]RIA:/\ @ISD_OF_T1Z,.,/# M#!+_ &;+ZTGYNE#_ -)4G]]S\.&^#&KWTQN=0\5(97.9'-NTA8_4L":W]!_9 M*\:>*$7^P]*\0:@<==+T5WSGZ*]?NGI$>G^'U":#\+5L54846=M%$!V_A J_ M_P )+J__ $*%[_WTM9/"^(%;^+G32[0H4U^.YSXGQ'X4FK4\HDWW>*JK_P E M@HI?(_%/2?\ @G1\>]=6.&#X'_$"09!26309+4'WWB%/YUW>F?\ !*K]J_Q# M9BQN/@UK]Q;E0#%JWBM(TQ[K+09_6_CYUB_\ MRI[-?=%'@8GC;(*S;_L#!S_ .OT)5W\W4D[GY9^'?\ M@BC\=[@*T_PU\*:<3U%_JJ2;?KY8DKN?#_\ P1&^*\97^TO$_@*P7C_CRBGE M8?@8$&?QK]$_^$EU?_H4+W_OI:/^$EU?_H4+W_OI:YZG ^ Q/^]8G$5?\=:; M_P A4?$?'8+_ '#+\'A_^O>&IQM]Z9\0:'_P12OD4?VO\?K2V_O1V/A@OG\6 MG7^5=9I'_!&7X50X_M[XQ^(;G^]]DLX(,_\ ?0DQ7UG_ ,)+J_\ T*%[_P!] M+1_PDNK_ /0H7O\ WTM33\.N#J;N\+S/NY3?YR-ZOB]XAU8\JQO*NT84X_E! M,^=-(_X)%?LKZ;C[=J?BS4".OVK5XE!_[]0I74:1_P $R_V,-*(:7X4RWCCH M]YKMX?T64*?RKV/_ (275_\ H4+W_OI:/^$EU?\ Z%"]_P"^EKTZ/!_"U#X< M%3^<$_S3/&Q'B#QSB?CS*M\JDH_^DM'YE?\ !:KX._"G]GN\^$]C\)M!A\*6 MFKR:U_;,VG-+NG6+[!LW'+,Q7S) /]\U\H+\6/A\JA1X@/ [VLQ_]EK]Y/\ MA)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6O+SWP_X>SZ5-U%*DH)I*ER03ONW[ MC;>RWZ;;G3PQXG<<\)UL34PM6G6==Q;>(C6JRBHQLHQ:Q$$HWO+X;MO5NRM_ M/=\5_$7@OQ5807FC:P)+RW?;L^SR+O0]1DJ!P>?Q-?T4UC_\)+J__0H7O_?2 MT?\ "2ZO_P!"A>_]]+7T.1Y-A\@RR&!H3E*$6[<[3:N[VTC'2]VM.I\IGF:X M_B3B/$9UC8THUJZ@I*E"4(MP32DU.I4?,TTG9I>ZM+W;V**Q_P#A)=7_ .A0 MO?\ OI:/^$EU?_H4+W_OI:]8X#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH M V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^E MH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8H MK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275 M_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7 M_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O? M^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O M?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6 M@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_ MX275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ MA)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^ MA0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_ M^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ M +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^ M^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V** MQ_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X2 M75_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X M275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H M4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A M0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH M V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^E MH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8H MK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275 M_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7 M_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O?^^EH_X275_^A0O? M^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6@#8HK'_X275_^A0O M?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_X275_P#H4+W_ +Z6 M@#8HK'_X275_^A0O?^^EH_X275_^A0O?^^EH V**Q_\ A)=7_P"A0O?^^EH_ MX275_P#H4+W_ +Z6@#8HJOIMY/?6HGN+"2V8L1Y4I&?KQ5B@ HHHH **** " MBBB@ HHHH **** "BBB@#XX_X*#_ +"_[4/[6/[5WP$^/'PO\3^ ]'TCX$>, MY?$5O8Z]N44 ? M&_C?]@;]I?\ :ZMOA1\-/V\OB)X+U;P3\*/$EAXBU!/"<-V;OX@ZO81LEG/? MQW"K'I]N'8SRVJ-=>;)M'FHBX;N/VIOV(O$/CW]J;X<_M[?L\Z[I&E?%/X>: M=>:''KL$RZ9=2PJTMN8YC]H@G1)/+DW;HI%?"_2%% 'SC^R]^ MQ'K_ (%_:E^('[>W[0VOZ1J_Q4^(&D6>@V]MX?CD_LWPMX?M2&CTRTDF EN# M)-^_GN'6/S)-NV*)4P=/]G;X$?M6ZAX)^+7PW_X*%?&#PI\3]"\:>*]6A\*Z M9I'AQ;&*Q\*74?E)IER$1/-;8TBL3YC88YFDR-OO=% 'P9!_P2V_:9C_ &)& M_P""4K?'7P^/@CN;2AXX"W!\6GPH;GSAHGVZN8H7GN)(HTBCB$*) H8[I7(=?J&BB@ HHHH M\H_;G_Y-'\>_]@%__0UKNOA=_P DS\._]@*T_P#1*5PO[<__ ":/X]_[ +_^ MAK7=?"[_ ))GX=_[ 5I_Z)2@#=HHHH **** "BBB@ HHHH _#Z/_ ()!_P#! M1-88XO\ AG!PR@AW/C'1R&YXP/M7''N:5O\ @D'_ ,%%0,K^SL2?3_A+=(_^ M2Z_<"BO3I9MBZ-/D5GZW;_/^MMCW,MXDSK+,LC@H5>91BHQE)1YHI*RV23LE MO*,F^K9\/?\ !&O]D']HC]E2?XE2?'GX:MX=3Q -&_L=7UJSO#/Y O?.YMI7 MVX,T?W@,[N,X-?<-%%>=*4IRNWK]_P"9X$%4O*52;G*4I2B M222T2"BBBI+"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** " MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ** M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** " MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ** M** "BBB@#RC]N?\ Y-'\>_\ 8!?_ -#6NZ^%W_),_#O_ & K3_T2E<+^W/\ M\FC^/?\ L O_ .AK7=?"[_DF?AW_ + 5I_Z)2@#=HHHH **** "BBB@ HHHH M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *** M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***Y'XT M?&"R^"?A2'Q9??#_ ,7>)$FOTM18>"_#DVJ7:%D=O,:*$%EC&S!?H"RC^(4 M==17@'_#P;PY_P!&G_'_ /\ #/:C_P#$T?\ #P;PY_T:?\?_ /PSVH__ !- M'O\ 17@'_#P;PY_T:?\ '_\ \,]J/_Q->]VMP+NUCNA%)&)(PX25"K+D9P0> MA]10!)1110!Y1^W/_P FC^/?^P"__H:UW7PN_P"29^'?^P%:?^B4K+_:"^&= M]\9?@OXB^%^F:G%97&MZ"[?\ MX);?$_4(](A6R2_AN0J7(B C$JCR#@-MW 9/7J: /LRBOCG_ (>4_M9?](G_ M (I_^!8_^1Z/^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!(G_BG M_P"!8_\ D>C_ (>4_M9?](G_ (I_^!8_^1Z /L:BOCG_ (>4_M9?](G_ (I_ M^!8_^1Z/^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!(G_BG_P"! M8_\ D>C_ (>4_M9?](G_ (I_^!8_^1Z /L:BOCG_ (>4_M9?](G_ (I_^!8_ M^1ZR_"?_ 5;_:-\<:;)J_A7_@EY\1M1MHKJ2WDGL-465%EC;:Z$BWX8'@CM M0!]M45\<_P##RG]K+_I$_P#%/_P+'_R/1_P\I_:R_P"D3_Q3_P# L?\ R/0! M]C45\<_\/*?VLO\ I$_\4_\ P+'_ ,CT?\/*?VLO^D3_ ,4__ L?_(] 'V-1 M7QS_ ,/*?VLO^D3_ ,4__ L?_(]'_#RG]K+_ *1/_%/_ ,"Q_P#(] 'V-17Q MS_P\I_:R_P"D3_Q3_P# L?\ R/1_P\I_:R_Z1/\ Q3_\"Q_\CT ?8U%?'/\ MP\I_:R_Z1/\ Q3_\"Q_\CT?\/*?VLO\ I$_\4_\ P+'_ ,CT ?8U%?'/_#RG M]K+_ *1/_%/_ ,"Q_P#(]'_#RG]K+_I$_P#%/_P+'_R/0!]C45\<_P##RG]K M+_I$_P#%/_P+'_R/1_P\I_:R_P"D3_Q3_P# L?\ R/0!]C45\<_\/*?VLO\ MI$_\4_\ P+'_ ,CT?\/*?VLO^D3_ ,4__ L?_(] 'V-17QS_ ,/*?VLO^D3_ M ,4__ L?_(]'_#RG]K+_ *1/_%/_ ,"Q_P#(] 'V-17QS_P\I_:R_P"D3_Q3 M_P# L?\ R/67KW_!5O\ :-\-:EIFD:Y_P2\^(UIZE"[BD8 M-O\ .V.<"@#[:HKXY_X>4_M9?](G_BG_ .!8_P#D>C_AY3^UE_TB?^*?_@6/ M_D>@#[&HKXY_X>4_M9?](G_BG_X%C_Y'H_X>4_M9?](G_BG_ .!8_P#D>@#[ M&HKXY_X>4_M9?](G_BG_ .!8_P#D>C_AY3^UE_TB?^*?_@6/_D>@#[&HKXY_ MX>4_M9?](G_BG_X%C_Y'H_X>4_M9?](G_BG_ .!8_P#D>@#[&HKXY_X>4_M9 M?](G_BG_ .!8_P#D>C_AY3^UE_TB?^*?_@6/_D>@#[&HKXY_X>4_M9?](G_B MG_X%C_Y'H_X>4_M9?](G_BG_ .!8_P#D>@#[&HKXY_X>4_M9?](G_BG_ .!8 M_P#D>C_AY3^UE_TB?^*?_@6/_D>@#[&HKXY_X>4_M9?](G_BG_X%C_Y'H_X> M4_M9?](G_BG_ .!8_P#D>@#[&HKXY_X>4_M9?](G_BG_ .!8_P#D>C_AY3^U ME_TB?^*?_@6/_D>@#[&HKXY_X>4_M9?](G_BG_X%C_Y'H_X>4_M9?](G_BG_ M .!8_P#D>@#[&HKXE\)_\%6_VC?'&FR:OX5_X)>?$;4;:*ZDMY)[#5%E198V MVNA(M^&!X([5J?\ #RG]K+_I$_\ %/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ M !3_ / L?_(]'_#RG]K+_I$_\4__ +'_P CT ?8U%?'/_#RG]K+_I$_\4__ M +'_P CT?\ #RG]K+_I$_\ %/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ !3_ M / L?_(]'_#RG]K+_I$_\4__ +'_P CT ?8U%?'/_#RG]K+_I$_\4__ +' M_P CT?\ #RG]K+_I$_\ %/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ !3_ / L M?_(]'_#RG]K+_I$_\4__ +'_P CT ?8U%?'/_#RG]K+_I$_\4__ +'_P C MT?\ #RG]K+_I$_\ %/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ !3_ / L?_(] M'_#RG]K+_I$_\4__ +'_P CT ?8U%?'/_#RG]K+_I$_\4__ +'_P CT?\ M#RG]K+_I$_\ %/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ !3_ / L?_(]'_#R MG]K+_I$_\4__ +'_P CT ?8U%?%7B?_ (*G?M+>#M NO$_B7_@EK\2;"PLH MO,NKR]U%8XHE_O,QM\*/>K5C_P %-OVJ=1LH=0LO^"4WQ0EAGB62*6*]#*ZL M,@@_9^004_M9?](G_BG_X% MC_Y'H ^QJ*^.?^'E/[67_2)_XI_^!8_^1Z/^'E/[67_2)_XI_P#@6/\ Y'H M^QJ*^.?^'E/[67_2)_XI_P#@6/\ Y'H_X>4_M9?](G_BG_X%C_Y'H ^QJ*^. M?^'E/[67_2)_XI_^!8_^1Z/^'E/[67_2)_XI_P#@6/\ Y'H ^QJ*^.?^'E/[ M67_2)_XI_P#@6/\ Y'H_X>4_M9?](G_BG_X%C_Y'H ^QJ*^.?^'E/[67_2)_ MXI_^!8_^1Z/^'E/[67_2)_XI_P#@6/\ Y'H ^QJ*^.?^'E/[67_2)_XI_P#@ M6/\ Y'H_X>4_M9?](G_BG_X%C_Y'H ^QJ*^.?^'E/[67_2)_XI_^!8_^1Z/^ M'E/[67_2)_XI_P#@6/\ Y'H ^QJ*^.?^'E/[67_2)_XI_P#@6/\ Y'H_X>4_ MM9?](G_BG_X%C_Y'H ^QJ*^.?^'E/[67_2)_XI_^!8_^1ZR[7_@JW^T;>^++ MOP1:_P#!+SXC2:K96L=Q=:4_M9? M](G_ (I_^!8_^1Z/^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!( MG_BG_P"!8_\ D>C_ (>4_M9?](G_ (I_^!8_^1Z /L:BOCG_ (>4_M9?](G_ M (I_^!8_^1Z/^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!(G_BG M_P"!8_\ D>C_ (>4_M9?](G_ (I_^!8_^1Z /L:BOCG_ (>4_M9?](G_ (I_ M^!8_^1Z/^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!(G_BG_P"! M8_\ D>C_ (>4_M9?](G_ (I_^!8_^1Z /L:BOCG_ (>4_M9?](G_ (I_^!8_ M^1Z/^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!(G_BG_P"!8_\ MD>C_ (>4_M9?](G_ (I_^!8_^1Z /L:BOCG_ (>4_M9?](G_ (I_^!8_^1Z/ M^'E/[67_ $B?^*?_ (%C_P"1Z /L:BOCG_AY3^UE_P!(G_BG_P"!8_\ D>J' MB?\ X*G?M+>#M NO$_B7_@EK\2;"PLHO,NKR]U%8XHE_O,QM\*/>@#[5HKXT ML?\ @IM^U3J-E#J%E_P2F^*$L,\2R12Q7H975AD$'[/R"#G-2_\ #RG]K+_I M$_\ %/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ !3_ / L?_(]'_#RG]K+_I$_ M\4__ +'_P CT ?8U%?'/_#RG]K+_I$_\4__ +'_P CT?\ #RG]K+_I$_\ M%/\ \"Q_\CT ?8U%?'/_ \I_:R_Z1/_ !3_ / L?_(]'_#RG]K+_I$_\4__ M +'_P CT ?8U%?'/_#RG]K+_I$_\4__ +'_P CT?\ #RG]K+_I$_\ %/\ M\"Q_\CT ?8U%>??LT?&+QW\@T %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 5X7_ ,$]_P#D MB>K?]CWK/_I2:]TJ#3]+TS2(#;:5IT%K&TC.T=O"J*6)R6P .2>IH GHHHH M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ KPO\ :P_Y+9\#_P#L M>Y?_ $F:O=*@N]+TR_G@N;[3H)I+63?;230JS1-C&Y21\IQW% $]%%% !111 M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% 'A?_ 3W_P"2)ZM_ MV/>L_P#I2:]TJ#3]+TS2(#;:5IT%K&TC.T=O"J*6)R6P .2>IJ>@ HHHH ** M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@#RC]N?\ Y-'\>_\ 8!?_ M -#6NZ^%W_),_#O_ & K3_T2E;%]86.J6DFGZG917%O*NV6">,.CCT*G@BGQ M1101+!!&J(BA41!@*!T '84 .HHHH **** "BBB@ HHHH **** "BBB@ HHH MH **** "BBB@ KPOP#_RD$\?_P#8B:5_Z,:O=*@CTO3(M0DU:+3H%NY8PDMT ML*B1U'12V,D#TH GHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B MBB@ KRC]N?\ Y-'\>_\ 8!?_ -#6O5ZBOK"QU2TDT_4[**XMY5VRP3QAT<>A M4\$4 8_PN_Y)GX=_[ 5I_P"B4K=IL444$2P01JB(H5$08"@= !V%.H **** M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH * M*** "BBB@ HHHH **** "BBB@ HHHH *CO&NTM)7L((Y9Q&Q@CFE*([XX#,% M8J"<9(4X]#TJ2B@#XM_8%_;E_:M^/O\ P4?_ &I/V1/VC?"_@O2+#X*Q^%!X M;M?!\EQ?$&+X$_\ M$^_^$#\)FPT:+4O%OQ,^).G7-[;0--)*EOIUA:P$">XQ"TLTDC!(HY(0 [2_ M)X)_P3O_ .4_?_!0K_KS^%W_ *CKU]]^/_'_ (+^%?@G5?B1\1?$EIH^A:)8 MR7FJZI?2;(K:!%+,['V Z#DG )(% 'Q-_P2U_X*"?MB_$?]J?XL?\$V?^"B M_@3PO:_%KX4Z?9ZS9^+/ J2II/B;1KDJ$N5CE),;@R1=-H;S&4QQM$V[Z*^, M'Q9\>G]K7X7_ +/OPVUIK6"33]8\7?$$PVD4S2Z-:0+9V]EF16\II[^^MY59 M,.R:=.H(!:O/OV#?V' M/"FGQ>786UPIYCN[@E[RXCR?+>6.$\PDGHOV.O\ B[?QN^,W[6EQ^]M=9\5K MX(\'S'D?V-X>>>VE93Z/K$^M-D<-&(3DX!H ^6/^"BO[4G_!;3]C/X):O_P4 M5T^;X-?\*^\*W-M>Z_\ RZT:ZDU6#1I;B.+][JRS;)+Y1*ID$2+#&0VPW 0 M>;^AOA[Q?K'C+X76'CSPUX8,-_JNA0W]CHVN7#6ICEEA$B03ND?%7]DWXJ^ [CPW\.)8?%WB+X3>)_ S7/\ MPET6F,MZ;>>[:Y998U: 2+:K!%YC(H,O %?4'[#/[3$/[97['?PU_:HB\.'1 MV\>>#;'6+C2C(7%G--$IEB5C@NBR;@K$#\^$FHQVOCGQ+>V/A;P!/+;I,(-:U2ZCL;2Y,3@K(EN\_VF16! M7RK>0M\H-?)G_!%+_D]K]OK_ +.1/_I*:^C?B7_Q>O\ X*%^ ?AO)U4:OJ(N-(T96['%N->D(/(:.!@.A !YW^TMJG_!83XS^-M<\,_L"> M*/A;X!\*^#F&GQ>*_BGH]U?7_C'4TB5IVABMU$5I9)(Q@,I1G>6*4HBQJI>I M_P $HO\ @J%XX_:S_9T^)^L_MH> -,^'GQ$^ 7BS4O#OQ>@T^1SID^#$6#%76OI_]H#XY^$_V=_AE>?$;Q3:W=_(LB6FB:#I<8DOM M:3"*. .78JBLR_#'QB_8P^(G[+_\ P1%_:PU3Q,;:X^+/ MQ<\*>-/'OQ/DT=S)!'J5_9RR36%LV SP6UJJVR'^/RV? ,A4 &CX'_;T_;O^ M.G[ 7B/_ (*U?"B#PQ8>#]/M-5\1>#?@OJ?A]WNM:\+Z=-*LKW>HK-O@U&X@ MMYYH1%&88MT*,DV6:OL'X+?M%Z1^U+^RUX9_:;_9I@L=6M/&GAFVU?PU;Z[? MO9Q8F16\JXDBBF:)XR61PJ.0Z%?(]._P""'7P,@\3K(LSVFN2VZS9W"V?7 MM1>'KV,;(5_V2M '7_\ !%W]N#]HO]NWX,?%;QO^T[H_AC3O$/@KX\Z]X+AT M_P (P3)96]MI\%D JM,S22GS)9F,C8+;A\J@!1H7W[6OQ6_:#_X*/^/_ -@# MX-_$C3/ -K\*/!&CZYXFUB?18[_5]E_P"5I@L+P3-IGAZ^@\J07H>)/@;XVL]&F\8>'[%[6QU^TO;"*^M MI/):23R+J-)/*GC5V3>H9=H<(OTK7P+_ ,$!OVF_"GQ0^"'CG]F_Q=^S_=?# M'XW?"OQ88OCMX=U&ZDNKG5=;O [G7'NI6>2Z^V&&1@[N^T1A49HA"S??5 !1 M110 4444 ?&?_!=+]MS]K+_@GG^P/XJ_:I_9@\(>"+Z3PZ]C'JE]XMNKF22T M6[O8;)'@M(D5)F$EQ&V9)U48.4?H?J'QU\2)_A]\%M3^*TOAJ_UNXTKPY)J* M:+I$0:ZU&9(2ZVT"G@R2/A$!(&YQD@+?AKH= MY;W'CSX0>%+2_74-$TR:9(\PZE*1]IECWJLDNS8&)<0M&#M_2'P9\8/ _C7X M+Z3\?;/4C9^&M7\+P>((KS4!Y7D6,MLMR))!D[,1MEO3!KYT_P""EWA"^_;? M\/?\.Q/A[=N!XV:QN_C!KML>/#'A1+E9I%W<@7E^T!M;>,@G8;BD:;+^SUX8_8M\!VBV"_%WQ%I_@"ULK(E!;:"8GGU<)CE0FC6=^BG@!VB&>1 MD Y7P=\0/^"C_P ;OV3O ^O?!6^\,:)XN^)45_XHN_&'C_1?.L_!VB7=RUSI MFF)I]JT+W=\EG<6T/[QU4&UGDF=F*1R%)X)&;R9P%X P#LE7!\L22?:7B7 M3/$C>$;G2/ASJNF:/J8M?+TJ[U'27N[2U8#"E[>.:!I$ _@65/J*_-K_ ()W M?$']MS]D?_@KY\2OV#?VXM6\*_$"Y^,/AF7XD>%?B_X<\/?V==7Z6KQ6(L+J M$,PCB@A39'%O?R0BX>3SR5 /8_\ @M%^W/\ M?1O$ MOQ.T+POKNK>(;FYGOK9+Z=U8V]HB)%PL>/,>9N9/]5\N3]K5^=O_ :=?>$=1O&;R&59W8SP !VRV]G$+*3& MY3?]S_L)_"7Q7\&_V6/"WA_XD0*GC'5XKCQ%X\*\YU[5+B34=1 )Y*K=7,R) MGHB(. !X[^T[\,++_@HS^U7X ^#-M MS\+_ (#>/[;QE\0M8 S%JGBBSB?^ MS-"A;I((&G-W>=53;;0G+22"( V/VU/VW/'?@3]JCX1_\$]?V:VTA/B9\6A? MZE>Z]KEF]U:>$_#MC$\ESJ#VZ21FXGE9#!;QEU0R!FD)5-CP? _]LKXE^ O^ M"@NL?\$SOVI->TW6M>O? 47C;X7^.=.TL6']O:7Y[VUW975N':-+VWFC9PT1 M"2P,&\N,H=_SCXBL]0M_^#M?0+OQ4&\BX_9#E_X1EI!\IVZK.)%0^H/V@D=< M'WIW[;*ZGJ'_ <^?L9VOAP,9;#X7>,+G6S'_#9/8:C&A?'\)EP!GC<10![) M_P %._VY_P!KG]D/]HO]FWP!\,/"/@<>!OB]\=-#\%^(=:U&YN;G5EBN9HVE M6& )'#;YC69?,+S'H0JDY'L?_!1_]M_PI_P3O_8^\5_M2^)O#TFM3Z.EO::! MX?BG$3:MJEU,EO:6V\@[%:612[X.R-7;!VX/S!_P7G_Y+)^PK_V>CX5_]JU[ M1_P6@_8 \4?\%*_^"?\ XK_9H^'GBNVT3Q8UW9ZQX0U"^=EMUU&SF$L< 2A%/VQ_P!I+XB>$_'_ ,/5\0Z; MIGQH\/Z#X.?3F\-07TJP+J.E3_:)))HX+AXT:&Y$C3+("KQ'BON>QO;/4[*' M4=.NHY[>XB62":)PRR(PRK C@@@@@U^-G_!<#]I[]O3XL?\ !(NQ_9&_:&_8 M4E\%?$[XP^+/#7@R)6\>:3J$>MZPM_;W9DTJ#3Y;B1XI&L^1ZY_?&"!(B_//.S/XT =%1110 M4444 1WC7:6DKV$$AZ5\8_L"_MR_M6_'W_ M (*/_M2?LB?M&^%_!>D6'P5C\*#PW:^#Y+BX#IJEK+?B9\2=.N;VV@::25+?3K"U@($]QB%I9I)&"11R0@!VE^ M3R;_ ():_P#!03]L7XC_ +4_Q8_X)L_\%%_ GA>U^+7PIT^SUFS\6>!4E32? M$VC7)4):KJE])LBMH$4LSL?8#H.2< D@5\W_L&_LY>)[KX[_%7_ (*._&;PG<:) MXO\ C-+I]GX=\-:A%LNO#GA33XO+L+:X4\QW=P2]Y<1Y/EO+'">822 >@_&# MXL^/3^UK\+_V??AMK36L$FGZQXN^()AM(IFET:T@6SM[+,BMY33W]];RJR8= MDTZ=00"U?'/_ 45_:D_X+:?L9_!+5_^"BNGS?!K_A7WA6YMKW7_ (&76C74 MFJP:-+<1Q?O=66;9)?*)5,@B188R&V&X"#S?J?\ 8Z_XNW\;OC-^UI'GGMI64^CZQ/K39'#1B$Y. :\/_P""[GP>_P""AOC7]FR\ M^*O[)OQ5\!W'AOX<2P^+O$7PF\3^!FN?^$NBTQEO3;SW;7+++&K0"1;58(O, M9%!EX H ^UO#WB_6/&7PNL/'GAKPP8;_ %70H;^QT;7+AK4QRRPB1()W2.1H MB"P5B$$=+N?@]\5AX6T6S\ M').UN+=(F8R--.=\S.0&W%8QS@(M>[_L,_M,0_ME?L=_#7]JB+PX=';QYX-L M=8N-*,A<6\^$FHQVOCGQ+>V/A;P!/+;I,(-:U2ZCL;2Y,3@K(EN\_ MVF16!7RK>0M\H->*_M+:I_P6$^,_C;7/#/[ GBCX6^ ?"O@YAI\7BOXIZ/=7 MU_XQU-(E:=H8K=1%:622,8#*49WEBE*(L:J7]$^)?_%Z_P#@H7X!^%R?O=(^ M#_A>Y\=Z\G51J^HBXTC1E;L<6XUZ0@\AHX& Z$>H?M ?'/PG^SO\,KSXC>*; M6[OY%D2TT30=+C$E]KFHRG9;:?:1Y'F3S2811P!R[%45F4 ^8/\ @E%_P5"\ M!_P!O3]N_XZ?L!>(_^"M7PH@\,6'@_3[35?$7@WX+ZGX?=[K6 MO"^G32K*]WJ*S;X-1N(+>>:$11F&+="C)-EFK.^,7[&'Q$_9?_X(B_M8:IXF M-M%/&GCWXGR:.YD@CU*_LY9)K"V; 9X+:U5;9#_'Y;/@&0J.L_P"" M?E]X9T__ (-S? ^I*\7]G6_[,D\EZ>-H*Z5,9\_\#$F?QH ]/\9_MB?&O]I? M]F7X9^/_ /@F;X=\/:GK?QBT5=8T;Q+X_6=='\+Z6L4;W%S>QVQ\R:Y22:*V M2T1@6F=F9A'#(:\#_9X_;L_X*6?LO_\ !2WP5_P3C_X*=6O@#QAIWQAT/4;_ M .%?Q1^'6F3V"FZL+=[BZLKNWD8@8C3JH&TRQ'$\]C&RD?[)6NW^&GPNM/VW?^"@NB_\ !0G4 M;8/\/O@_X;U/PY\$;AQG^WM1U JFKZ_$?^?3R8H[.V;D3@7$ZYB>!W )?&7[ M9'Q<_:!_X*(>(O\ @G?^RGXKTKPS'\,O!MIKWQ:\?7VC#4I[2ZOB#I^D6=N[ MI$LKQ$W$D\HD41@(J;F+KO?L _MO>*OC[\2OC!^R-\>;/2K7XL_ CQ5!I?BB M31;=X+/6],O(?M.F:O!!([M )X/OP%Y/+D4X/O"$;;6'C^Y]M>QTQX W;=Y2S =\ ^] 'Z=4444 %%%% !7QG_ ,%TOVW/ MVLO^">?[ _BK]JG]F#PAX(OI/#KV,>J7WBVZN9)+1;N]ALD>"TB14F827$;9 MDG51@Y1^A^S*_/S_ (.E/^4%GQM_ZZ>&?_4ETN@#[8\=?$B?X??!;4_BM+X: MO];N-*\.2:BFBZ1$&NM1F2$NMM IX,DCX1 2!N<9('-?G#^VG^U=_P %^_\ M@G[\,9_V_OBYI/P&\6_#70[RWN/'GP@\*6E^NH:)IDTR1YAU*4C[3+'O59)= MFP,2XA:,';^G7A3_ )%;3?\ L'P_^@"OEO\ X*7>$+[]M_P]_P .Q/A[=N!X MV:QN_C!KML>/#'A1+E9I%W<@7E^T!M;>,@G8;B!_&OP7TG MX^V>I&S\-:OX7@\017FH#RO(L9;9;D22#)V8C;+>F#7SAX.^('_!1_XW?LG> M!]>^"M]X8T3Q=\2HK_Q1=^,/'^B^=9^#M$N[EKG3-,33[5H7N[Y+.XMH?WCJ MH-K/),[,4CDZK]OO2--E_9Z\,?L6^ [1;!?B[XBT_P 6ME9$H+;03$\^KA, M[M+5@,*7M MXYH&D0#^!94^HH ^+?\ @F/^V5^W1XL_:^^-O_!//]OS2/">L^*_A-9:3J^D M_$7P'I\MI8:QINHHSPI/!(S>3. O & =DJX/EB230_X+1?MS_M?1O$OQ.T+POKNK>(;FYGOK9+Z=U8V]HB)%PL>/,>9N9/]5\N3XY M_P $[OB#^VY^R/\ \%?/B5^P;^W%JWA7X@7/QA\,R_$CPK\7_#GA[^SKJ_2U M>*Q%A=0AF$<4$*;(XM[^2$7#R>>2O3_\','_ "9+\-O^SD?!?_I5+0!^B5?+ M/C#]J']HZZ^(/QHU/X"^%8?%T7A?4]#\ _#GPE=;+>SO/%,D)O-2U&ZNUC:5 M;.WAO[-9=I(0:;=JBM*P%>_?&WXM>%/@)\&_%?QP\=3M'HO@_P .7NLZHR:=?>$=1O&;R&59W8SP !VRV]G$+*3&Y3?]._MJ?M MN>._ G[5'PC_ .">O[-;:0GQ,^+0O]2O=>URS>ZM/"?AVQB>2YU![=)(S<3R MLA@MXRZH9 S2$JFQ\?\ :=^&%E_P49_:K\ ?!FV@6Y^%_P !O']MXR^(6L 9 MBU3Q19Q/_9FA0MTD$#3F[O.JIMMH3EI)!%X%XBL]0M_^#M?0+OQ4&\BX_9#E M_P"$9:0?*=NJSB14/J#]H)'7!]Z /H[X'_ME?$OP%_P4%UC_ ()G?M2:]INM M:]>^ HO&WPO\TOSWMKNRNK<.T:7MO-&SAHB$E@8-Y<90[_(OVC/ MB3_P7T\;^$==_:J_8\L/@QX>\'Z7!/J/@WX3>,-&OKK7_$NF0Y9);N=62.UN M;F-?,CM4*&,2)')() Y7D/VV5U/4/^#GS]C.U\.!C+8?"[QAPU M&-"^/X3+@#/&XBOM+]MOXU>-/A_\,F^%?P'LH=3^+/Q M[G2?AUI,CD)!<% MLNJW1 )CL;)9%GFD/7$<*YEGA1P#(_X)E_MSZ=_P4>_80\"_MD^'/!O]B7'B MO3;@7N@SW19+34+6YFM;B)9=N6B\Z!RC[<[&4E5_L-_MS?M8?'#_ (*< M_M+_ +&O[1'A;P5I&E_!W2_#$WARW\(2W-SYHU.VENS)-=7"QM,_EM"AQ#$H M*-A3]X^^?L-_LC_#[]A#]DKP)^R/\,)I)](\$:$EDM[-&$>^N&9I;FZ=02%: M:XDEE*C@&0@<"OD3]A#_ )6&OV\/^Q7^&O\ Z9!0!^B5%%% !1110 5'>-=I M:2O801RSB-C!'-*41WQP&8*Q4$XR0IQZ'I4E% 'Q;^P+^W+^U;\??^"C_P"U M)^R)^T;X7\%Z18?!6/PH/#=KX/DN+@.FJ6MS>&2:YN C3N8OLXXBB52K *>6 M/=_MC^*?^"BWCSX@Q? G_@GW_P ('X3-AHT6I>+?B9\2=.N;VV@::25+?3K" MU@($]QB%I9I)&"11R0@!VE^3P3_@G?\ \I^_^"A7_7G\+O\ U'7K[[\?^/\ MP7\*_!.J_$CXB^)+31]"T2QDO-5U2^DV16T"*69V/L!T'). 20* /B;_@EK M_P %!/VQ?B/^U/\ %C_@FS_P47\">%[7XM?"G3[/6;/Q9X%25-)\3:-8RF.-HFW?17Q@^+/CT_M:_"_P#9]^&VM-:P2:?K'B[X@F&T MBF:71K2!;.WLLR*WE-/?WUO*K)AV33IU! +5Y]^P;^SEXGNOCO\ %7_@H[\9 MO"=QHGB_XS2Z?9^'?#6H1;+KPYX4T^+R["VN%/,=W<$O>7$>3Y;RQPGF$D]% M^QU_Q=OXW?&;]K2X_>VNL^*U\$>#YCR/[&\///;2LI]'UB?6FR.&C$)R< T M?+'_ 45_:D_X+:?L9_!+5_^"BNGS?!K_A7WA6YMKW7_ (&76C74FJP:-+<1 MQ?O=66;9)?*)5,@B188R&V&X"#S?IC]O;_@HQX;_ &(_V%%_:[O_ !>ZCK6 MNPZ99>"/ UU(+>YU+6]1"BTL)&Y\LJ69I3R52&0@$@ ^/?\ !=SX/?\ !0WQ MK^S9>?%7]DWXJ^ [CPW\.)8?%WB+X3>)_ S7/_"71:8RWIMY[MKEEEC5H!(M MJL$7F,B@R\ 5\Q_\%??VC+K]L_\ 8D_X)[_M;WGAN31_#OC7]HWP1J_B32V< MO%8W$\,I,98_>12+I5<@;EP<#=B@#Z[^,_[7'[4__!.[Q=\&_%'[:'Q'\*>, M? _Q7\9VO@SQ;?>'_"[:6/!NO7L3O936S&>4SZ:TD4L,GG_O8_W\^$FHQVOCGQ+>V/A;P!/+;I,(-:U2ZCL;2Y,3@K(EN\_V MF16!7RK>0M\H-?$O_!VFNHW?_!*NRT7PZKMK>I?%_P .6V@+%_K&O2\YC"8Y MW85L8YKZT^).?C5_P4)\ ?"X'SM)^#_A>Y\=Z^H&5&KZB+C2-'4CH0+<:](0 M>59(& Z$ 'G?[2VJ?\%A/C/XVUSPS^P)XH^%O@'PKX.8:?%XK^*>CW5]?^,= M32)6G:&*W416EDDC& RE&=Y8I2B+&JEZG_!*+_@J%XX_:S_9T^)^L_MH> -, M^'GQ$^ 7BS4O#OQ>@T^1SID^#$6#%76OI_P#: ^.? MA/\ 9W^&5Y\1O%-K=W\BR)::)H.EQB2^US493LMM/M(\CS)YI,(HX Y=BJ*S M+\,?&+]C#XB?LO\ _!$7]K#5/$QMKCXL_%SPIXT\>_$^31W,D$>I7]G+)-86 MS8#/!;6JK;(?X_+9\ R%0 :/@?\ ;T_;O^.G[ 7B/_@K5\*(/#%AX/T^TU7Q M%X-^"^I^'W>ZUKPOITTJRO=ZBLV^#4;B"WGFA$49ABW0HR399J]J\9_MB?&O M]I?]F7X9^/\ _@F;X=\/:GK?QBT5=8T;Q+X_6=='\+Z6L4;W%S>QVQ\R:Y22 M:*V2T1@6F=F9A'#(:\P_X)^7WAG3_P#@W-\#ZDKQ?V=;_LR3R7IXV@KI4QGS M_P #$F?QJ+_@V/LO$.E_\$./@;'XJ\Q)39Z[- )R=PMGU[47A//8QLI'^R5H M Y?]GC]NS_@I9^R__P %+?!7_!./_@IU:^ /&&G?&'0]1O\ X5_%'X=:9/8* M;JPMWN+JRN[>1B!B-.J@;3+$=SB1O*]9_:CUO_@K_P#''XA^(M#_ ."?NN?" MGX<>$O"4_P!AM_$7Q-TF\O[SQ9J21JTPMXH1LM+&.1_LYE97E>6&4JH15+S? M#3X76G[;O_!071?^"A.HVP?X??!_PWJ?ASX(W#C/]O:CJ!5-7U^(_P#/IY,4 M=G;-R)P+B=9/-)A%' '+L51690#YR_P"".'_!1+XN_MZ_"/QSX:_:=^%%CX-^ M+GP>\?7?@WXD:3H[LUA+>P $7%MN9RJ-\Z[=[\QE@Q5UK["KYU_X)J_L>Z_^ MR?\ "'Q)X@^*CV4WQ,^+/CO4_'OQ0GTV3?;0ZOJ$@?[ _BK]JG]F#PAX(OI/#K MV,>J7WBVZN9)+1;N]ALD>"TB14F827$;9DG51@Y1^A^H?'7Q(G^'WP6U/XK2 M^&K_ %NXTKPY)J*:+I$0:ZU&9(2ZVT"G@R2/A$!(&YQD@//A!X4M+]=0T33)IDCS#J4I'VF6/>JR2[-@8EQ M"T8.W](?!GQ@\#^-?@OI/Q]L]2-GX:U?PO!X@BO-0'E>18RVRW(DD&3LQ&V6 M],&OG3_@I=X0OOVW_#W_ [$^'MVX'C9K&[^,&NVQX\,>%$N5FD7=R!>7[0& MUMXR"=AN)R-L'/3?M]Z1ILO[/7AC]BWP':+8+\7?$6G^ +6RLB4%MH)B>?5P MF.5":-9WZ*> ':(9Y&0#S33?C=_P4X^-7[.W@+3/V:K/PK8>._B1IU]XSUCQ MG\2=*D_LWP/X>O+MYM)TQ;2T5&N]0^RS10@.V ;*XDF8ED5N0_8-_;X_;Y\' M_P#!1/7?^"5?_!3?PYX+U/Q7+X&/C+X<_$KX>VDUM8Z[IBS^3)'/!(28Y0WF M#("!3 ZD.&CD?[[U'4/#_A#P_/JNJWUGI>E:79M+.=#GL;._\$P>!?@IIM[;M%./#,=R MUY<:O-&X#1R7UR^^)" Z6L4);#3.B &?\)?VI?VA_P#@H/\ %GXTZ)^RE\7- M"^'W@KX-^.;CP):Z[>^$UUF[U_Q):PQR7SR))/&D-C"\T42I'^]F(=Q-$-JG MJ/\ @ES^WUKG[<7PR\9Z#\6O!]AX;^*GPB\?:AX)^*6@:3*[V2:G:2%?M=H9 M"7-K.HWQ[R64AUW.%#M\^_L@?LV_MV_\$L?VN?CUX=\ ?LT2?%KX(_&7XA7? MC[PWX@T+QII6FW7A74KLDW5K?P:C<0M)#@1J)8/-8);JQ5FD*)YG_P $(/BI M=:1X#_;>_P""N/Q4TR'3/!'CKXJ:MKNDIIUVUS!A^ ?ASX2NMEO9W MGBF2$WFI:C=7:QM*MG;PW]FLNTD(--NU16E8"OF'XQ?MP_\ !8O_ ()@_';X M7^+/^"@E[\(?B9\&/BEXZL_"6K:C\-="O-.OO".HWC-Y#*L[L9X [9;>SB% ME)C%O#_P 2(%3QCJ\5QXB\>%>W22,W$\K(8+>,NJ&0,TA*IL>#X'_ M +97Q+\!?\%!=8_X)G?M2:]INM:]>^ HO&WPO\TOSWMKNRNK<.T M:7MO-&SAHB$E@8-Y<90[_G'Q%9ZA;_\ !VOH%WXJ#>1\'Z7!/J/@WX3>,-&OKK M7_$NF0Y9);N=62.UN;F-?,CM4*&,2)')() Y7V;]BS_@H/XU_;Y_X)F^%/VV MO@!\&8)?%OB[3WMK3PCJ>J&*SL]5CO7L)VFN-I;['%+').SJK2M F%1I"$/> M_MM_&KQI\/\ X9-\*_@/90ZG\6?B!;W.D_#K29'(2"X*!9=5NB 3'8V2R+/- M(>N(X5S+/"CZ/[#?[(_P^_80_9*\"?LC_#":2?2/!&A)9+>S1A'OKAF:6YNG M4$A6FN))92HX!D(' H ^/)_VL/\ @K'^Q;_P4+^"OP$_;*\2?##XI?#OX^ZK M?:/I]_\ #[PG=:1?>%]2@MS<8\N6>;SK8*%_$_[,W[3/PJ\(^!/!TL6H:9X7\7>$;K4VO\ 5UP4OKM0ZQR&!OFMX\%8 MW F(,JQ-%]J44 ?&?P&_9Z_X+-:)XQUCQO\ M/?MP?#CQ;%IW@W4H_ WA7PK MX/ET:QE\0RQA+6ZU*4+)++;1@R Q*&&Z19-C-$E?1/P'^!DG[//[,/AG]GWP M%X@C^U^%_",&EVFMW]L9_/O$@"M>SH&4RM)-NFD&Y2[.WS G->AT4 ?'_AOX M%?\ !6WXN_!76?V=OVNOCM\&+.PU^RN-,UCQ]\-="U(:Q<:;,K1RI#:W16VM M;IXF95N,RI&3N$+E>?IGX>?#/PQ\"_@[HWP@^"WA2SLM(\)>'8-*\+:+)=/% M!%!;0"*WA:4+(RKA%4OM=NK88\'IZ* /CG_@G/\ L+?M/?LA?M(?'GXO?%3Q M5X$UK2?CG\0'\5S6N@3WD=QH4NR15MU\V';=*5**7)B(*LV#D*/=?V>_@?XF M^&WCGXH?%+X@:G87NN_$/QRVH1O8.[)9Z1;6L%CIUH"ZJ05@MS/(H&T3W=QM M9@0Q]1HH ^!/VD?V,O\ @LW\2OVQ+W]I#X-_MB?!?0-$TF":P^'?ASQ!X#O- M2.@VKY66X!9PIO9TPLLX&0F8HRJ,XD]F_8Q_9Y_;QT"3QIJ/_!1_]I_PO\4? M[>T^#3-"\.^%/"W]F:186>)?M1E@;)N)9R\:EI"P5(MJ[0[@_2M% 'PAH'_! M+S]I;X:_L;^(_P#@ES\)OC;X;L?@CKLFIZ=IGBV^6ZE\4:!X9U":26[T6* J M;>YD"SW$$5\\R>7'(N;>0QC=]>_#WX4:%^SS\"=#^"O[/GA#3K;3?!_AZVTG MPMHU]?/!;I!;Q+%$DDRQRN/E4$OL9F.2>237944 ?'__ 27_84_:._8#T/X MG^"_C#XO\%>([#XB_%C6O'ZZCX<>[AFL+O4?LX>S\F:,K)$ODDB7S%89P4.< MC?OOV,/B]\%/V\/'/[=/[*NJ^&=1?XM^'M(TWXH^!?&5_<6$5Y=:7&\%AJ5I M?V\%RT#I;R-"\#6[K(,,'0@Y^H:* /!_V5OV0+_X0?'+XK_M;_$_5M+O/B+\ M9+O2?^$@AT"%UT_2]/TRU-M8V,#2XDN&57E>2X<(97DXCC5$0>\444 %%%% M!1110!\J?\%C?V(OC9_P4?\ V)?$G[%OPG\4^%O#EKXQFT]]7\2>(9+F22U6 MSU"WO42&WAC(/M5$48V1QQ1Q(J1QHB M_5GP6_94^,WA[XK?#KXC?'SXOP^-;KX?_"NXTHZO.&6XU3Q-J5S%+JVI-"$$ M<$(2UACMD0GRX[JXB"HBKN^@J* /"?VJ] _X*/S_ !)\(^)_V)_'_P )8O#= MI%/'XT\*?$S2;\/J!8KY699HF4!AM,97)R=^0JK\%?V4?%MK^T;?_MH? MM(^*=&UOXC7/A%?"VA6?ANPDM]+\-:-]H^TS6]N9G:6XFGG"/+0RRAV>5R[EF8L?TBHH ^;?VL?V$-0^*?Q=^$?[6?P)\5VFC_%; MX+3W,.@WWB-II[37](N[=$DNYY[AVEEN M&BAXVQI&JAB_TG10!\=_\%./V%?VF/VU_BA\#?%'PF\5^!]"TSX*?%K3/'T? M_"0S7DL^LW-FS>+0/ MO. +B2T24F2ZOI@ LM]+L)4*D<4 M*K@_2=%% !1110 4444 -G,RPNUM&KR!3Y:NY52V. 2 <#WP?H:^-OV2/V&/ MVJO@3_P4B^._[<7CWQ%\/[W2/CRF@1ZCX=TB]OA$;K4VO]77!2^NU#K'(8&^:WCP5C<"8@RK$T5CX#?L]?\%FM$\8ZQXW M_:>_;@^''BV+3O!NI1^!O"OA7P?+HUC+XAEC"6MUJ4H6266VC!D!B4,-TBR; M&:)*^S** ///@/\ R3]GG]F'PS^S[X"\01_:_"_A[36[^V,_GWB0!6O9 MT#*96DFW32# M/OAKH6I#6+C39E:.5(;6Z*VUK=/$S*MQF5(R=PA$O#L&E>%M%DNGB@B@MH!%;PM*%D95PBJ7VNW5L,>#\P?\ M$Y_V%OVGOV0OVD/CS\7OBIXJ\":UI/QS^(#^*YK70)[R.XT*79(JVZ^;#MNE M*E%+DQ$%6;!R%'V-10!Y=^SW\#_$WPV\<_%#XI?$#4["]UWXA^.6U"-[!W9+ M/2+:U@L=.M 752"L%N9Y% VB>[N-K,"&/RK^TC^QE_P6;^)7[8E[^TA\&_VQ M/@OH&B:3!-8?#OPYX@\!WFI'0;5\K+< LX4WLZ866<#(3,495&<2??=% 'S5 M^QC^SS^WCH$GC34?^"C_ .T_X7^*/]O:?!IFA>'?"GA;^S-(L+/$OVHRP-DW M$LY>-2TA8*D6U=H=P?)= _X)>?M+?#7]C?Q'_P $N?A-\;?#=C\$==DU/3M, M\6WRW4OBC0/#.H322W>BQ0%3;W,@6>X@BOGF3RXY%S;R&,;ON^B@#XZ_;;_8 M2_:M\7?LK^!_V+_^"=7Q7\!_##P%X=TVVTS7;7Q-I%W?2:EI=JD<<.F?N77% MO(J$7!)WSJ=A(1Y1)SWP7_96_P""VT'Q-\'VO[0O[?\ \+7^&^BZQ:W.O^'_ M (<_#=M+OK^TMB)([&.=B1#"[I$D@3:3%O0'#8/W-10!\Q?$C]B?XB^!/VX[ MS_@H-^R-J'AI/%'BOP;%X9^)?@[Q;$7Z HH **** "BBB@ KY4_X+&_L1?&S_ M (*/_L2^)/V+?A/XI\+>'+7QC-I[ZOXD\0R7,DEJMGJ%O>HD-O#&0Y=[=5+M M(NT$X5LY'U710!YKJ.F?M2_\,T7.@>%;KP/I7Q031/LNE:AUS4? MA7<7%_JM_-@/=7$SO^\?:J(HQLCCBCB14CC1%_2ZB@#Y]^"W[*GQF\/?%;X= M?$;X^?%^'QK=?#_X5W&E'5YPRW&J>)M2N8I=6U)H0@C@A"6L,=LB$^7'=7$0 M5$5=US]JO0/^"C\_Q)\(^)_V)_'_ ,)8O#=I%/'XT\*?$S2;\/J!8KY6 M99HF4!AM,97)R=^0J^[44 >%?!7]E'Q;:_M&W_[:'[2/BG1M;^(USX17PMH5 MGX;L)+?2_#6C?:/M,UO;F9VEN)IYPCRW+[-PAA1(H@C;_-_^"OW["?[0_P#P M4-^$?A3X+?!OQAX-\,V?A[Q[I/BRYUKQ(UW/+//8/*R6JV\,8"HQ9"93*3P5 M"#AC]>T4 >/?M#_!7XH?M)?"7PM\,_$S:!I=O/XUT?4/B):6NH3W$5SI=C=K M>O:6SM AE^T36UM#(LBQCR)IQN)"AW_MQ^ _VN?BC^SQJ_P\_8G^+GASP'XV MU@BV3QAXCL)KH:7:LK"66WCCZW/W0C/E4R6P2%%>O44 ?F[\/OV$?^"]WP\^ M'.G?!7P7_P %$?@CX6\,6< M%D\-?":4WUM"[DS3127+2![EBSR&64.SRN7< MLS%C](?M8_L(:A\4_B[\(_VL_@3XKM-'^*WP6GN8=!OO$;33VFOZ1=VYM[W2 MM0D4F7$B$/'<8D:&8>9L?_0_C1XP^.GA_\ ;U^ T6M>+[E5DEO?AC>71TW3XR?L^F6K22DQ6L19 MF"#EY)))7+N[,?TAHH \<_8H^%7[5GPH^$%Y;?MD?M 6/Q)^(.K:Y<7]_JVD MZ9_9^FVD)5(K>SM+<#]S$L<2LQP6:225B6)S7BW[+G[#/[5OP8_X*9_&W]O' MQQX@^'UWH_QNL-!L[_PSI5]??:=#32K-;6%XYY+<+=%U#%E9(AEN" N#]F44 M %%%% !1110 4V%_$_[,W[3/PJ\(^!/!TL6H:9X7\7>$;K4 MVO\ 5UP4OKM0ZQR&!OFMX\%8W F(,JQ-%]J44 ?&?P&_9Z_X+-:)XQUCQO\ MM/?MP?#CQ;%IW@W4H_ WA7PKX/ET:QE\0RQA+6ZU*4+)++;1@R Q*&&Z19-C M-$E?1/P'^!DG[//[,/AG]GWP%X@C^U^%_",&EVFMW]L9_/O$@"M>SH&4RM)- MNFD&Y2[.WS G->AT4 ?'_AOX%?\ !6WXN_!76?V=OVNOCM\&+.PU^RN-,UCQ M]\-="U(:Q<:;,K1RI#:W16VM;IXF95N,RI&3N$+E>>\_:C_X)L_L^_M*_L&C M]@"*RF\+^%])T33[/P/?:0-UQX:N-/$?]GW4!8Y9X6B3(+ R+O5F^?$7X1ZS^WIXJ\#W/AKX,>)(/%%CH'@B.Z=?%OB6WA>*TU. M\%RB"RA@\R65;*/S\R2#=.438WM'[/?P/\3?#;QS\4/BE\0-3L+W7?B'XY;4 M(WL'=DL](MK6"QTZT!=5(*P6YGD4#:)[NXVLP(8^HT4 ? G[2/[&7_!9OXE? MMB7O[2'P;_;$^"^@:)I,$UA\._#GB#P'>:D=!M7RLMP"SA3>SIA99P,A,Q1E M49Q)[-^QC^SS^WCH$GC34?\ @H_^T_X7^*/]O:?!IFA>'?"GA;^S-(L+/$OV MHRP-DW$LY>-2TA8*D6U=H=P?I6B@#X0T#_@EY^TM\-?V-_$?_!+GX3?&WPW8 M_!'79-3T[3/%M\MU+XHT#PSJ$TDMWHL4!4V]S(%GN((KYYD\N.1_M(?!O]L3X+Z!HFDP36'P[\.>(/ =YJ1T&U?*RW +.%-[.F%EG R$ MS%&51G$GWW10!\Y_L+_!+_@H1\/==\4>,O\ @H!^UCX>^(E_J$%I:>%=)\%^ M&SI.F:3 AD:>1HC\T\\K-$-[EMBP@)MWN#]&444 %%%% !1110!\J?\ !8W] MB+XV?\%'_P!B7Q)^Q;\)_%/A;PY:^,9M/?5_$GB&2YDDM5L]0M[U$AMX8R'+ MO;JI=I%V@G"MG(]AU'3/VI?^&:+G0/"MUX'TKXH)HGV72M0N7N[S18KL*$6Y M=-D4S(!E_)]0$\PC+5Z510!^:/PB_8*_X. ?@GX;O]!\%_\ !1/X%MZN)G?]X^U411C9''%'$BI'&B+]6?!;]E3XS>'OBM\ M.OB-\?/B_#XUNOA_\*[C2CJ\X9;C5/$VI7,4NK:DT(01P0A+6&.V1"?+CNKB M(*B*N[Z"HH ^0O\ @IY^RE_P40_:SO\ POX1_96_:!^&W@[P1I4\>H>)=%\9 M^&KK4F\17D;LT4%RB,L;V<9$.>XOVJ/V>_P!IW]L'0M5_9_U[XBZ-\./AAK+26OB;4/!NI7%[XD\0:6Q* MO9QRRV\$.DB:/Y9707;[7=$9"1+6A\4?V,/#-W^SMX#_ &1/@3X?T/PK\.?# M_B?0CK6A1"1%.@Z=FRA 5O,:>>WMXI?,8;XIKAF=G.&]UHH \A_;C\!_M M<_%']GC5_AY^Q/\ %SPYX#\;:P1;)XP\1V$UT-+M65A++;QQ];G[H1GRJ9+8 M)"BOCOX??L(_\%[OAY\.=.^"O@O_ (*(_!'PMX8LX!:+)X:^$TIOK:%W)FFB MDN6D#W+%GD,LH=GE(VFGM-?TB[MS;WNE:A(I,N)$(>.XQ(T,P\S8^YE,7P._8F\;6G M[7_BK_@HC^T=JWA_4OBAJW@N'PAX0T/07F?2O">A13/B@#\WK#]AK_@O?H?QH\8?'3P_^WK\!HM:\7W*K)+>_#&\ MNCINGQD_9],M6DE)BM8BS,$'+R222N7=V8^[>&/@1_P54\'_ +&VMZ&G[8_@ M77_C]JOB?^TX_%7B#PA+_P (Y;6BO%&NG06<+*\$1MXAF0!F,LLK$$L&'U71 M0!\O/^RG^U#^U+?^ KK_ (*!>(_ATFD> ?%%GXGC\'_#*TOI+;6M;M,M9W%S M"?\/1?^"??_1U?A7_P(D_^(KXC_P""JO\ P69T MGQ9H-Q^SQ^QKXO>:RO[4HM)+OJOPZGRF=<;\.9+E\\5+$0J-;1A*,I2?1))OYMZ(_2[X8_ M&[X1_&?^V/\ A5/Q#TK7_P"P-5DTW6/[,NA)]END^]&V/T894X."<&NIK^;[ M]D/]KSXN?L7_ ! =-\8ZQ\<=-\,WMW;AKW0==WQW-E+_%&V%VN >CJ2&&#QR!Z?$' M!V/RFLGATZM-]4KM/LTOP?ZG@\'^)64\18:4<9*-"M'=2DE%KHXMVOYK?KL? M3M<%^T_^TM\(/V//@+XE_:2^/'B0Z5X5\*V(N=2N8X&EEFVZSWT&FR,S0QLVT,V M5'!/%>=_\%5_V$O^'D7["OC7]DRR\<'PUJNMQVMWX>U[:S)9ZC:7,=U;M(%^ M8QL\01R,L%_9I^!NI_M/?M%_\$UOBIH/@/3])?4+B]TK5]&U34=,AV;D;4;&& M[$EJIX#M&9Q"3F0HH9AUG_!0/_@I=X+_ ."=7[+]O^UY\4_@AXP\1^#<6 U2 MX\)26$D^GM=LJ1;X[JY@+J7=$W)NP7'&,D? OP__ ."U_P"T1^QW-_P[X_X. M*OV9]0\/VOB/39_#]M\9;0_,:] MD_X.@9_#-S_P01\<7/@O58+_ $:2?PJVDWUKO?$+_@M/\,/V=)O!>K?ML?LI?%GX+^%/'UW!:^'_ (@^*X-%O]#C MN)D\R*&[N-)U*[:S9ERP\U%&U78D*C$>N_M0_MR^$/V>O''@?X(^#_A_K/Q# M^)7Q)-R_@SP/X8GMHY)[2V19+G4+FYN)$AM+.)63,KL6=G58TD;('PS_ ,%9 M_!'[3W_!3[]@+P-_P3Z_9;_8_P#&:ZCXHN] N/$7CKQSI\.E:+X9LK0)(\YF MDE+W,C$* MNDA,;28);:K=3_ ,%*?^":?[<_@F_^!/[:G_!+KX@6.I_%O]GK MP*/"<_A;Q1M%OXST40HCPDNZH)6*N61G3<)0RRQR1(6 /I#P[_P4;\2:7^U' M\/OV//C]^QSX\\!>+OB1/J/_ CVK37NGZEH%S!9:?<7L[1W]K,Q,JB!4,$D M44G[U7 9!NKZ>K\W/^"?7_!:_P#9T_X*#_'_ ,+_ ++W[8'P+UWX)_M)?#_6 MKC4=*\">+(9(XKJ__LV[LYVLY9$1RQM;NY;[/*JMM8%&F"%A^D= 'SY\>?\ M@HC\./A;\?[+]C_X2_#WQ#\5/B_>:5_:EQX$\&?9E.BZ>2 +[5+RZEBM[" E MEV[W,K[UV1/N7/-_&S_@I+XN_92T'2==_:J_8T\:>';37O$FF:'IFN>'=4LM M;TI+N^O(K6)+J>&1);3YI0V^6 1'&Q9#(R(WQ]_P:K>(;_\ :$T+]J7]N+XC M,;GQU\0_C]=6FM75P=TL5I;6L4]O;*3RL49OI$5!P%C4#A1C]2OB?\,_!?QC M\ ZG\,_B'HJ:AH^KV_E7ELY(/#!T=2.5='575ARK*K#D"@#>HKY%UO\ :U^* M?[2__!1KQM_P3X_9[^(2>"=*^$G@O3=8^)OC6TTJWO=5?4M2_>6.FV27:26T M*"V!GEFEBF)WI&J)AI*X_P#99_;C_:EMOV\OBO\ \$FOVC_%?AR_^(/ASP?% MXO\ A-\4?^$99+;Q!H59+%- M,$L;4%2IE;[5._FYRGE8FJV7[=__ 5:_:<_X(U6?_!6+X2?&GX<_#=_"_P\ MO_$>H>"H_ C:N/%3Z5).E^T]Q<3K_9\4IM9O*@A21U&"UP?,VQ 'ZM45^;7[ M?7_!3?\ ;(\$?L*?LK?MJ?LS7/@_2+7XW>*_ UCXE\-:OHM,8H4&TP'=;2/A_,5U*[6F_:M_:C_X*F_L2?MT_ OPOKWQA^''Q$\)?'_Q! MJ'AF+P,?![Z+!X6U);=9+66*_66XN+J(,X\QI%RZQ/MCC,J>4 ?H_17P!X%_ M:9_;X_9G_P""N_@']A[]J;X^^%OBCX0^-/@'6-:\/WFC> $\/S>&]1TX&62! M%6XG:>V:)2 99'DRR_,-C&2'5/V^/B[^UEJGQ<'[/WQL\:A=1Z=V^#OQ1TSQC:>&_'WA'QS\-KZ"ZO#+>1P) M?::E]-&+>.19(VQ-#.N6D4,/+W'WG]H+]J'_ (*'?\$[O GQ(_:7_:H^(7PX M\>:1XIO-"T3X(_#7PWHDVGRZ9XCU"X^SK8W-XQ8W%K&9%9[@G?*L$CK';Y$5 M 'WI17R#X]TG_@K1\$_CY\'-:\ ^.=,^,W@KQ+XA&F?''1[W1=+T6+PO:R"/ M_B:Z4RLEP8HCYI-O-)>2NH10=S;QR/BS]O+QW^T=\)3X2M?$'@;X#:GXQGU77X[2&XNWN)(["ZM8;:!KB*$6R[+AV220RHC1@@' MW917RM_P2#_:N_:X_:P_9>O-;_;@_9XUSX??$+POXJN]"OVU;P??Z)!XCMXE MC>#5K2VOHTD2*59-I'($D4F-H(1?JF@ HHHH **** "BBB@ HHHH **** "B MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***XWXR?M"?!;]GS3++ M6?C3\1M.\.6NHSM#93ZBY59I%7<5& >0.:-R*E2G2@YS:275Z(N?&+XQ?#CX M _#C4?BW\6_$7]D^'M)\G^T-0^QS3^5YLR0Q_NX4=VS)(B\*<9R< $CPS_A\ M1_P3D_Z.*_\ +1U?_P"1*\I_X*?_ +<7[)7QA_89\(O[6\ M/:MYW]GZA]CF@\WRIGAD_=S(CKB2-UY49QD9!!/\X-?KK_P3 _;B_9*^#W[# M/@?X<_$WX[Z%HVN:=_:?V[3;R9A)#YFIW+Y(146[ZK6Z5KN36S9]WU\H_\% O^"M'PQ_X)GZ]X5OOVH?@+X_M/ 7BO MQ+!H'3[O2-.N95+C[4@NQ=1*$65^(&++"^T,1MKZ*^%7Q>^&GQO\)) MX\^$WC*SUW1Y)WA34+%B8S(APRY('(-?,O\ P5U^!WPM_:6L?V?O@)\;/"-O MKOA3Q7\?$T[7-*NL[9H7\*^(^A&"CJ<,KJ0R,JLI! -8'W$)PJ14HNZ?5'U7 M#XGLM9\(1^,O!+PZ]:WFGK>:4^FWD31W\3H'C:*4ML*NI!5\[2"#G%>6?LA_ MM?7'[6T'BV^M?@#XM\&6O@_QCJGA>^F\4W6G,;G4-/N/(N1"MG=3EHQ(& D; M:&VDC@@G\_/^"=_QT^*__!%3]L"R_P"",W[;OC*ZU7X5>+KJ2;]EGXL:LV$> M)I/^0#=2<*LBNZH@XV2,J@>5<0!/J+]F'QI\6/AS^R1^TEX]^!'PS'C/QKH_ MQK^)5WX4\*-R:Q47-LE MM/OC NI;@3AM^(;7XU?$K3O!]IXM37+2UL-+GNI50EDS)<2R(A:39Y21 ML%QYP.<<%^T%^V]^U+^QI^R;\*O 7Q7A\-^(/VC/BW\38_A_X6=K(P:,U]<: MC/&FK2P0R;Q916:QSF(/YC;XXV969G7YT_X*^?#+]I;X=_M;_L)R?$7]I67X M@>&;W]J?P]]JBUKPQ86-W8:JKC:UL]C'$IM)(VFS%,LLJ-''^^<,U 'ZR45\ MB_'7XG_M=W'[47CW0?''QAM/V?O@3X.\'Z:_ACXI2)HTS^)]>O-YDCD;4UEC MB@M]@C\A8DED8Y$P#*H\5_9=_P""W/BT?\$4=7_X*)_M*^$]-USQEX6\17_A M6/3/#*&S@\3ZNFH+8V/EJY8VXF:6$R'Y@@$KJN $ !^DE%?FK_P5R^.__!43 M_@G/_P $\]7_ &WM _:W\-ZIXLTQ]/MO$_@Z7X=VAT*R:_N(K7=IC9^UA[>6 M9"K74UPLBJQ:,9"C]*J /DWXK_\ !5W0/A+_ ,%!?!__ 3. MO'FC3ZOX8U+3KG2#I=Q80BY:6=YI+Y7BV+:3$HT>_P"Z K%ES]&_%+QWKWPZ M^'6H>.]&^'&J>);G3K)[F30=(N;:.ZF5$+LL;7$L<1;C !=02>M?G-^UK_RM M2_LJ'_JAGB3_ -$ZM7Z5>-N/!FKY_P"@7^6+%(K>SGF!FN&FA6.(N&)F7=M^; M'%?'G_@JC\7/V4/@3JO[3?[2_P#P38^*.A>"=.TMKR2]T76]&U:\TX% M ]5\)^(&W^79ZI9Z98SVYEV?,(V*E&9060/O4,5"GP/P1_P6P^-?[.*W'_!. M#_@XS_9DU#P>OBW1[GPXOQGT.T\[0/$MG/$UO++/Y(*+NC=5\//X&UV"*>1 M+>_D%E8V]U:2B%0I"Q.7GC3S!M)?C/V+?VB?^"P/[?=O^TE\,=%_:>^&/@+6 M/A+\>=<\':7XSL_AFU\LZV*1QQ6\%A-=%;>)W!E>>>:[DQ-Y:J-F\@'Z5RI)B@*Q_:957D!)$3'RFO;?&>D_\ !5_X(_M)?!^]\#^.+#XT?#WQ1JLN MG?&RRU+1M*T0>%(F6,QZGIAC9)VA5O-S;RM=R%45=VY]Z@&[^S5_P4?NOVA/ MV_/C!^PAJG[.6M^#K[X1Z%I.I76L:YKEI.^IB_7S(]D-H98T3RRCAO/9CN*L MB%2*^G:_*OP'H/[2/B__ (.#OVP/"'[-7Q"\/>#-3O\ X9>!Q>^,]>T1M6;2 MHA8I@V]AYD27$SDX#2RK'& 6*2\(?2?V#OVW_P!NSXQ?LS?M.?#;XD>/?!&H M?&/]G3XAZYX:M/&]SX/E&F:_!:0>?;W,]A;W4!BDDVR*1'*%0%#ARK!P#]"Z M*_)/PE^VI_P5[^-/_!$#3/\ @J;X1_:5^'WAK6/#/@K5?%&J>')/ATE]_P ) M3#8WMUYZ3S-+&MBGD0^7'%!$SGR@[SYE*Q;_ .V=^WS_ ,%/OA7_ ,$V?"?_ M 6@\#_%+X?:+X/3P]X4\2:G\"H_!S7G]IZ5JTEE&1+K$LHE2X)O4<+##&D2 M@INF9?,< _4VBOF3]J/XI?M!_@]K.@:IKOQ6^,S_V?)<: M#%! C6EE"E_O@A:9W!>:2&90BG:%VLP\B_X)E?MV?M'?M<^,_P!I[]FJP^.7 M@OQ?JGP<\6Z?:?#OXLR>&UGL]9T[4;>6>W>[M;&XMXKEHQ"RF2WDA23<&4 # MY@#[PU:]N=.TJYU"STFXOYH+=Y(K"T:-9;EE4D1H971 S$;0795R1E@,D?.7 M_!-[_@HC_P /"+/XMSR_ K4_ -Q\*/BYJ7@._P!+UC6H+RYGNK**$S22?9QY M41$DKQ[$DF7]WN$A#8'RK_P2:_:8_P""Q_\ P4@_9U^$7[7FH?'7X7>'O#4? MQ#U.V^(WAR;P8SW/B/28;^:.3[+,C$6;1HH@BC*[BT;32S."(CYI_P $T_VH M9_A;XH_;7_9[^">KQ7OQO^(?[;GQ$A^&7AJ&6#>LD9A9]3N_-5UAT^W^_-*R ML6 \N)9)GC0@'[%5X?\ M&?ME>(?@E\9_#'P$^'?[)?Q&^*?B'Q+H5[K#)X) M?28+;2[2VE@B9[JXU2^M(HR[SJ$4,S/L? ^6NU_9Y\"_&[P)\/K6P_:$^.@\ M>>*)((SJ>IVGAVVTNR28+\XMK>(%T0D_\M9)&X'(Y%=DNC:0NKMX@72K87[V MRV[WP@7SFA5BRQE\;B@9F(7. 6)[T ?&/PL_X+(ZO\:_V@/B3^RY\,?^"HKIP,T#7P22-YI(BKQ2 M29257^[DCPS_ ()6?\I^O^"A/_7QX+_](9:[[_@YKT;2-)_X(:_'^;2M*MK9 M[T^'[B]>W@5#<3'Q#I2F1R!\[[45=QR<*!V% '6?$W_@M+X3_9W^$OAO]HS] MJC]A_P"-7P^^&7B7["T7Q"N;?0=7L--CNPAMY;V/2M5N;FVC?>@#&$_,P3[Q M"G[$\(^+/#'C[PIIGCKP5KUIJNC:UI\-_I.J6$XE@O+:9!)%-&Z\.CHRL&'! M!!K\>?VR_P!K;QK^W#^R;\-O^"%7P5^!&K^$/B5\8_A/H$\?BCXN2VNF:*FC M6J6T\UQ9-!-/)?SD6K[840,JAG/*;:_5#]D#]GC3/V2?V5OAW^S!HWB"?5K; MP!X,T[08]5N8]CWAM;=(C,5R=F\J6V@D*#@$XH R/VWOVM;#]A[]G;Q%^TWX MF^$OB/Q9X>\):=)J'B*#PM-9"ZM;5-N^4)=SPK( "6(5BV%. >!4_P"Q;^U1 M:?MI_L[^&OVF/#_PI\0^$]!\8:3!JGAZU\3RV9N[BSF7=',R6L\RQAEVL%+; ML,,@'(KR[_@M_P#\HA_VB_\ LD^K_P#H@U\YZ1^T#^T?^R?_ ,&QWPW_ &E_ MV7_$OAG3O$7@G]GO0-2;_A)_#TNH1SPBSMU=8@EQ"(I0&+*[B5,KM,9#9 !^ MF=%?E?\ M6?MQ?\ !4[]E?\ 9&^"G_!3#Q-\;/ -[X.UB[\(V_CCX0V?@<&6 M\L-4CB66\.K-*'%V7D#B*&"*&(R!?WPB+3?47[1W[8/Q(\4?\% ?!G_!,/\ M9K\36OA_Q'J/@2[\>?$CQK-I\=Y/H'AZ*Y6T@BLH)7%TZKOF5XX8U+F* M4NH !I>&O^"CMSKO_!4^_P#^"8VJ_LYZWHES9?"JX\RO7TMO$R%8[Q;94@>=+@W*^9%%$K1B+*!@Q;:U3_ (*-_M+? MM=?LU>,_VI/V1?BGX[\,75O>ZVOPA\(:#^S;K/B33?$4&FW4]M%_:.H)ITR2 M/>RVSX^QSQ+:I,BN99(W- 'Z8T5^/:17:)=0R%8CE M?L'?M;?%S_@HYXWT/]IC]GSXQ:A:_L_67@[3X;Z'7/"EHNH^(O$S)YEY!'+Y M:^5!:JT<4[HI5[GS8X6586) /M"BBB@ HHHH **** "BBB@ HHHH **** "B MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *** M* "BBB@ HHHH **** "N8^,WPD\'?'CX7:W\'_B!#<2:+X@LC:ZBEK.8I&C) M!.UQ]T\#FNGHJX3G2FIP=FG=/LT9U:5.O2E3J*\9)II[-/1I^I\8_P##AC_@ MGU_T+GBG_P *:3_XFOF+_@I%_P $0-/^$G@%OC/^QU!J^I66DV[/XD\+7MQ] MIN5A7DW-LP4,X4??C.3CYEZ%:_6NBOH<%Q9GN$Q,:KK2FEO&3;37;_@]#XS, M_#OA/,<#/#QPT*;:TE"*4HOHU;?S3T9_-]^R'^R'\7/VT/BY:_"GX4Z7Z2ZS MK-PA^RZ5:YPTTK#\E0?,[<#N1^LWAS_@@3^PAI>@VFG:]%XLU2]AMU6[U%]> M,)N),?,^Q%"H"CG?&V99C77U23I071/5OJVU^"/%X6\+H_^"C>O?M4>%?V;HO%/[&?PWO/&'CW3?'/ANZL_"MGJ M<=E_:UDFKVK7UL]Q*RQPQO:"=6D<[5!R0<8/O%%?(XG%8G&5G5KST8JRUU>GJ? /_!1SXNS?MX?L,^.OV/]*_X)T_&+6?'_ M (Y\.S:;HGAOQ?\ #Y[33] U:1"MOJ,^LNS::JVDI6??!%?^"7'P7^'7BSXI_$33/#7A32FF\-:)-+:D:?<6\EQ,;B0 M+''$/L[)'&6\W:T?R8R1^K=%8'6<%^S%XLF\7_ ?PM>7W@_7M O;70K.UU+1 M_$FC365U:7*6\8DC995 <*3M\R,M&Q!VL<&O&/VB/C=^UO\ C]N31?$7@C] MF/QI\1/@Y??#<0>-KGPE-;R7&A:HM_*UKI%=WIFGC&YO+\B%=Y#L9"I_2NBB@#\P/A-^SA^T__P $3_VW M_BM\1/@A^SAXE^+O[-/QRU\>(K_1_AY%%<^(/ 6N,SF798.Z->6_\ @GY_P6@\;_\ !0#PC\'? M%'Q ^#?[0'@[3],^(">!M*?4M5\)ZWI\4,-M=-819GNK22*%@3 LCJ\[Y4!$ M$G;?!+]G_P 6_$?_ (*C>/?^"N/Q)^&?B/PUX;TGX06GP_\ AOH.J:++_;.J MVZW;WU[JDFGQAI[<&1A!##(HF=1(S1Q@IN^XJ* /S._X(X^%/C9^S=_P3F^, MGPZ^.G[-'Q&\.^*+_P"(7BS7-'\.3^$KB:XU*UU$J;7R6A#QL[,Q1E+@IM+/ MM3YZY/\ 93^$/[07PX_X-C-=_8@\8_LU?$*T^*X^&/BSPI#X,_X12X>>>^U. M;4WM&25083"4G1GE\P+']UL,R*WZNT4 ?C[^U-\(OVEO'/\ P2$_8N_9W\&? MLF_$S4?''PJ\;?#Z]\>^'(_"X_ M\%6=$^*GQA_;"_8W^)/PA_9^^(?B70?AO\4G\2^.-2T[P;=JNDZ?+!'$K.DJ M([R#+,T4:M(HC(*ABJG]$:* /SP_:O\ #7Q8\4_\%T?V9OVC?"7P!\?ZIX ^ M'_@OQ+IOB_Q=:>$KK[-87&IV;I;+M9!+* Q0.T:,$W\G*N%\I^$6O_\ !17_ M ((O?M6_&'X/:)^P)XY^/?P,^*WQ*U'QS\/?$/PS,03"RGOU5(995BB#2.6.^>>58MT**5]L_X+"?LC_$O M_@IU_P $U;WPI^SLNH:!\0-.U73O%O@*R\2V;:=.FJV$Q<6TR3@>2[*9HU9O MW>]HVW&/YJ^SZ* /A7]D;]O;_@I!^UU_PC?PD\=_\$U_'/P6UZPNK,_%#Q_X MSDMXM&AAA=6NDTA&+2WTMR$:*/Y?+MQ,9&DD\I5D\3N[C_@H1_P1Z_X*%_&C MQI\,_P!B'QC\??@)^T#XM'C&V;X<;)M7\,:_+&J7B26YZQR,!\S;4V+"PD#+ M)&?U6HH \O\ V3O%/[1OQ"^'EU\3?VE?A]'X)U/Q#J1NM%\ ?;H;N?PYIPBC MCBM[JXA 2:Z=DDGDVDI'YZPJ6\HR/ZA110 4444 %%%% !1110 4444 %%%% M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %>6?M3_L<_!7]L70 M-*\-?&FQU&>UT:\>YLAIVH-;L)&38IT4TVGH95J-+$4G3JQ4HO=/ M8_-?_@H=_P $K/V2OV;OV//%_P :/AEH^NQ:YHW]G_89+S6WFC'G:A;0/E", M'Y)7QZ'![5^8=?T??&+X._#CX_?#C4?A)\6_#O\ :WA[5O)_M#3_ +9-!YOE M3)-'^\A='7$D:-PPSC!R"0?#/^'._P#P3D_Z-U_\N[5__DNMH54E[Q\/G?"- M7&8J,\$H0@HI-:K6[UTB^EC\-*_3S_@GC_P2L_9*_:1_8\\(?&CXFZ/KLNN: MS_:'VZ2SUMX8SY.H7,"80# ^2),^IR>]?1__ YW_P"";,\TG[R9W=LR2.W+ M'&<# )U4U[H9)PC5P>*E/&J$X.+26KUNM=8KI&\FN42^NS/)YDA!;YB.F1TKP__@HAXD\7-\8/V>K?P3\$_'7BJ+PC M\:[;Q%XMOO#?A:XN;?2]+_L75[$SM(% F82WL),4/F2;0YV\*&^K**P;N?=4 MZ=.C34(*R6B2Z'SW_P %&/\ @G[\#/\ @J7^R5J/[/\ \6[2>S^W0IJ/A'Q( M+%H[_P .ZFJ$V]Y&D@5T9=Q62)MI9&>-MI.1\E_LX_LP_P#!5'X'_P#!"KXO M? ;3=;O_ /AI:)F#!II(?JC]L+P=\)_VQ_%/B[]G#_@ MIQ_P3I\7:]X+CTK3;[X>^-_"O@J\UZ72[RXL(?MVGP76E1275O-#<@D7 1;> M4,5=L1[6^^:* /Q>\9_\$O?^"F'AS_@EQ^S9\0/#5GJ'C#XR?LQ?%V7QEX3\ M ^)]7B?4+[PT+UGM])FG5S&;I+>.VS&'(1"\*$LD:GT+]O\ ^*O[6?[?'B;] MDCXG_!O_ ()A_'738_AS^T3HOBCQCI?BW1K'3+JWCMHW:>*)9[I5*JH?%Q.T M$#,8E5V+L(_U?HH _-G3K[]L[X?_ /!9CXE?%#XY?L(?$#XI>'-?\*Z%#^SC MK^ERZ=)I/@11:XU6WN))KD0Z=--IE,7[?44 ?B)_P6E_;F_:M_:S_ ."%OQ!TCXZ_\$Z/B'\(=7TF M\\-IX[U;QP;>UTR2[76+(;=) D>YO5>4!MSQ11)'N_>NP57_ &[KY=_X*\?L M >/O^"G'['6K?L>^%/C-I/@;3_$.H65QK.M7_AJ34YMMK=17,:0HMS J$R1+ MN9BW' )S7T?X,@\96OA:RM_B#JFFWNM)#C4;O1[*2VMI9,GYHXI))&0$8^4 MNV#GF@#X0_X*F_LI_M(:!^WM^SU_P5@_9>^%=[\0[OX/+J>B>/\ X>Z/27#.QBV]&->E?$_\ ;G^+7QZ^&>I_"?\ 9)_8 MP^,:^./$^ES:=8ZI\2?A_=^&=%\-R31F,WM]=7X3SHX=QD\JT6>24H$4#=O' MUQ10!\J?M)> ?VDOV1OV$OA;\+OV$/AWJ/C[Q'\,M2\'Z/8^&[;4HM/;6M'L M#!;W<4L\SK# KVDR:?IWAK4VP(=3GUB0G3U6UK@,%NY;2TB@>10W(0E#M!Y M"X!Z5\)?\%O/!?QY^+'[:7[(OC/X&?LN?$;QUI/P5^+H\4>/K_PWX:8Q6]HL MMBXC@>X:)+J1EBD.(V905PS \5^G%% 'YY?\%4_B7^U1^WI^Q=XO_8K_ &3_ M /@GE\2KO7?B391Z5=^(OB/:6&A:-H%J9HWENY7GNC+-(BIE$BC8[L-DE0C^ M<_M3_P#!+7]L;]E7]B[]D;QS^PO):_$'XM?L>3232>'[BX\B/Q597ULL6KV] MNTA4C=M*1H2&\EF"YD"*WZIT4 ?(/[(7[;W[9_[8OB;3O$?C3]@/QY\ _!GA MB&>\\9S?$-(Y=0UR<6\J1Z;IUG'&9Y(A(ZSM=%$+?9TBCC8S,4\G_P""..D_ M%?\ 9Y\8_M=^*/CE^SM\1O#5MX]_:.\1>//!JW?@VZEDU;1[N2-83&L"OMF. M%)A?:X#9QA7*_HM10!^(WP-_X)D?ME?&[_@W[3]D6S^%?B+X>_';X8?%F?Q_ MX)TGQ98_9(KV\CU&XNK98[EB8"SPSS(,OA)53S-B,'/VO^R-^WI_P42_;$N_ M#7PT\9_\$VO'/P0U+3;VTE^*'C?QQ)!'I4<4#J]Q;Z1&V9K][K8T*L55($F: M0R.T:+)]Q44 ?G?^RMX=^*_A7_@NC^TM^TEXM^ 'Q TSX?>/? _AS3/"7BVZ M\(71MK^YTVT1;E=BH98P2'"-(BA]G!RR!N._81\,?&[X1^(/V]/$/Q"_9A^) M>FP_%/XBZOXA^&T3Q!:3VTMO$(PBMY,C.8SLG\LA9-S8"2%/U!HH _ M*;]G3X2?M ^!?^#8W5_V)/%/[-7Q"MOBO_PJWQ)X3B\%?\(I(OV+?B9\5_V?M+^'*?"&N:Y?W^F:QX>F=KJUN;V:[CDMF@# MBX;;)M\I"9=RXV892WQMX*_X)H_'KXG>"_VG?C]H_P &?B'\*_C[X>_:@\5_ M&']FSQA/X3F\_4+*[>)DTV0QJZLET(UCDMI2""ZN5>-9E/[FT4 >'?L"?M,? M&?\ :5^ >C^(OVE/V9O%/PI^(EM8QQ^+/#&O:6Z6WVD#:TUG< M'+ Y!94W^ M8@.UQP&;VO4;^#2]/GU.Y29H[:%I9%MK9YI"J@DA8XPSNV!PJ@L3P 2<5-10 M!^8__!-/P9\[-A$ M\#F54#26JOOWJTRH H.\H?EKU'_@XE\!_%GX_?\ !+;XB_LL_L__ 8\6>-_ M&WC?^R$T?3/#NB2S1(EOK%G=S237! AB CMWPI?>Q*X4C)'W/10!^>G[37_! M/K5O^"C?_!,CX8V?@W2?$'PS^/\ \&M TG4?AEKVO:5+IU]X?\1V=G;E[5I' M7$EM*\:QM)$9(MR1R N8=M>^?\$X/VL?VCOVBO@QI.F_MB?LE^,_A7\3M.TQ M4\4VVKZ/C2;^XC*H]Q97,3NFR0D.(7*NN64>8J>8WT?10!\L_P#!9_2O'/CS M_@FU\6O@?\*/A=XF\8>+?'?@B^T;P[HOAK19;EI9Y56/,D@'E0(H?=F1UW!6 M"[B,5\O^-/ ?QU\1?\&TR?L7:?\ LS?$8?%:W^"^F^"W\$R>$KA;@ZC''%$S M++M\@P[8GD\P28 PIP[*A_4:B@#\J?\ @IW\,?C_ /'?_@AE\*_V:/A'^S'\ M1=:^(5E#X+CU3PG'X4GBGT]M*6V:\\V24+" IB**5=A(2"FY0S+N_MB_#O\ M:D_9J_X*O^ ?^"RO[-W[-GC/XH> _%'PL/@+XL^!O#ND,GB72[;[5]HBO(+& MX\N27#I;YC S_H[Y*B57'Z#I-;\10:=9OI\TFOSW8GN8Y+L;,!#NMD:2Z5'C=H0' 'G7[$'C7_ (*7 M_P#!%B[\0?\ !.G5O^";WC[XY_#*T\6ZC??!+Q_\.+JW,<>GWMS)<"SU S$1 MVFV61V9Y638[R8$D>QZ_7:B@#Y2^,/Q(_;/MOA5\/_@)J?@SQ%;^./B?JTD7 MC[Q[X&TAKS3_ (<:7<332R)%<*B^?3(J+Y;_.G[-_P2^,O M_!(S_@IIXD^"7[,?[.WC_P 3?LH_%+3K?6M1BT;2+B\@^'GB*IV7]^/^9[L.$^*:DU&.!K7>G\*?_R)[)17PM^PC_P40TJ;7O%^C?M' M^-X-.CU34Y-8TB]O&8Q0M(V)+13@[5 V%!Z!_:OI'_ANC]D7_HO>@_\ ?YO_ M (FO/RGC#(,VP,<3&O&%[^[*45)6=M4WUW7DSU\^\/>*LAS2>"EAIU.6SYH0 ME*+ND]&D]KV?FF>L5YE^U_\ M*1?LA?L]^*?VD=6^%NO^*]%\%Z%=ZSXAL_# M4UHMW!8VT333S*MU-"DFR-'8J&W$*< G .Y\,OV@O@O\9;ZZTSX7?$73M;N+ M*(2W45DY)B0G 8Y XSQ7F'_!6/\ Y18_M+?]D \9?^F2\KZ'#XG#XJDJE":G M%]8M-?>M#Y#%8/%X&LZ.)IRA-;QDG%Z[:.S/&]._X+?:*_[).F_MZ:Y_P3W^ M.]K\'M1TQ=3;QG9)X;OS9V!8J;R>RMM8>[2!<%G;R244%F '-?6WP$^/'PD_ M:>^#GA[X_P#P)\;6OB+PCXJTY;W0]8L]P2>(D@Y5@&1U961T8!D=65@&4@?C M1\%/^"C>K^!/^")_P!_X)P^"?V=/$47Q!_:#^&%WX'^'WBOQQ)9Z=X2FENDE MMY9FO?/=V95N%\N Q!Y79$P-PS^A_P"P'^P1X[_X)Q_\$JO#W['OACXVLGBS MPGH.H7MQXNT_3HIX!J4]Q/?2K'#)Y;RQ\.6[V%ZVDWVJ116TE MM(&"QO%:Q E&5PP#;L;E:]\7?^"K?C/X3?L+?L<[1ML! !^BU%?(S_'3]J3X M"?L^_'G]I(_$[3/COX-\,_#9?%/P4U;2+.R636C#97TMQ:W$FG!8[E_-AA/F MP1HABD0(F\/GD?V%_P!I_P"*?[8D'P;_ &@/V:OV^]'^+'@S5;N4?'3PK-X? MTJUN?#QET6]EA6!+>..YL5CU%+6(P7)N)71PPF*JQ< ^YZ\(_P""D7[;-S_P M3T_9(\4_M7_\*+UOQ[9^%;1;B_TS1M4M+00QM(D8DEDN'#+'N=03%',XZ[, MFOGK6?V]/BA^U3XW^,/A[X%_&SQS\-M-^&GC?4/!7AG4?"'[/FJ^+UU;6+!$ M6\NKZXCT^ZMQ;+'KG2/$>B:WX8O=(6^>&ZM62_MK>]195@E21?4"1)5!^7 M/I_]OO\ X*Q7/["W_!/'0/V_I?V6];\8V&M:-I-[=Z5IOB2TM;?27OT@\F.X MN)1YK*9)UC#PVTO()94!&?L.OR@_X+M?\JP5K_V)OP]_]*]+K]7Z /(OVW?V MS?AO^P;^S[KW[1OQ4\'>,-;T?P_82W=Y:>#?#4VH3B./!9G8;8;= #DO/)&F M >>#74_LW?&G2?VDOV=O 7[1.@Z+<:;8^/O!>E>([+3KMU:6UBOK2*Y2)RO! M95E"DC@D'%>,_P#!: _\$E?VCP1G_BS7B#_ -(9:H?L:>,]:^'/_!$;X4_$ M+PXN[4=!_96T+4;!=N&H)4X[_,HH D\1?\%0-"O;GXE>(?@1^SQXM^)' M@OX-:G/S!*HC/6?M)_MI^$?@+\3_!G[._ACP7 MJ?C?XG_$(74OA;P1HEQ#"XLK50USJ-W<3LL=I:1 A3(V7=V"1)(V0/CK_@Z] MUB]\&?\ !*F+XJ>'[LVNO>#/BSX:UOPU>HM M'V]^R_\ MC^"OVD?$_C?X3W7AC4?"7Q$^&FJ06/CWP+K0KD=&K],Z "BBB@ HHHH **** "BBB@ HHHH **** M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBN.^,7[0/ MP8_9^TVSUCXS_$33_#MKJ$[0V4VH.P$TBKN*C /('-.,93=HJ[+ITZE6:A!- MM]%JSL:\U^./[8?[,O[-UQ'8_&KXQZ3HEW*@=-.9GGNBAZ/Y$"O(%/9BN#ZU MY5\?O^"J/[*G@GX+^)?$_P */C;H&N^)K72I#H.E0.[-/=L-L>05&55F#,,_ M=4U^+GC#QAXH^('BB_\ &OC77KG4]6U.Y:XO[^\E+R3R,*YJ<%I:UFWY76WG9G[\? []L3]F7]I&XDL? M@K\8])UN[B0N^G*SP700=7\B=4D*CNP7 R.:]*K^;WP?XP\4?#_Q18>-?!6O M7.F:MIERMQ87]G*4D@D4Y#*1_+H1D'@U^T?P!_X*H_LJ>-O@OX:\3_%?XVZ! MH7B:ZTJ/^WM*G=U,%VHVRX 4X5F4LHR?E848_*IX9ITKR3^]?<&?<*5LM<9X M7FJ0>FUVGYV6S[V1]/U\H_\ !0+_ (*T?#'_ ()GZ]X5OOVH?@+X_M/ 7BOQ M+!H'3[O2-.N95+C[4@NQ=1*$65^(&++"^T,1MKZ+^%GQ<^&OQM\)IX MZ^%'C"SUW2))WA2_L6)C,B'#+R!R*^9/^"NOP.^%O[2UC^S]\!/C9X1M]=\* M>*_CXFG:YI5UG;-"_A7Q'T(P4=3AE=2&1E5E((!KR6G%V9\C.$Z/?@1\,QXS\:Z M/\:_B5=^%/"C7*PC5M0CU2Y:"W+DC =PH/()!P#DBD2?8]%?F)\7?^"@/[7/ M[''Q8_9.\._%;]J/P]XP\8?&+XA>'?"/QM^#-SI.E1OX3N=9B7;/9-8J+FV2 MVGWQ@74MP)PN0W!(]3^.G_!0FRM_^"G&M_\ !/\ ^(7[65/-(\VV7Y H /NBOF/]N7_@H[ M<_L5?'3X'_!B\_9SUOQ#:_&KXE:=X/M/%J:Y:6MAI<]U*J$LF9+B61$+2;/* M2-@N/.!SC@OV@OVWOVI?V-/V3?A5X"^*\/AOQ!^T9\6_B;'\/_"SM9FOK MC49XTU:6"&3>+**S6.^U1:UX8L+&[L-55QM:V>QCB4VDD;39BF665&CC_?.&:@#] M9**^1?CK\3_VN[C]J+Q[H/CCXPVG[/WP)\'>#]-?PQ\4I$T:9_$^O7F\R1R- MJ:RQQ06^P1^0L22R,*_LN_P#!;GQ:/^"*.K_\%$_VE?">FZYXR\+> M(K_PK'IGAE#9P>)]734%L;'RU;POX5\;0ZUXC\;^/-1: MP\ ?#?P;8+>:YXCN%&Z06\+.B)%&OS27$TD<,:\O(N1GE/B!^W9\;/@'\-=3 M^-G[1_[!/C?1O"6CZ?+?:O>>$/$&F>(+W2[>--[RW5I!,DA50#N-L;D)CHH Y;X#_ !8TGX]? [P9 M\<]!T^6TL?&GA33M=LK6=PSPQ7EM'<(C$<$A9 "1P2*ZNOCW]H/]HR\_9L^. M/[/'_!)C]D"/3- USQKH=S'#K6I6IO(_"7A31;'!DC@9E$]S*(EMX-Y:-61W MD5PNQN3\7?MG_M*?L&?\%*/A3^Q]^TY\1HOB-\,?V@;>]L_A]XYO=#M;#6=! MU^T"%["\%DD5M_P!IC_@J/^TO^WY^ MUE^P[_PT!\-_#4'PDE\)QZ!XTTWX<23'3H=2L;J[/E:?->/Y\\B^2K23W+11 M_9V*P-YN$R_V#OVB_P#@K5^W7\._C!^SU>?M)_#SP-XV^!GQ>UKP1K/Q:M/A MX-2F\226NW[.\>F/-%;6:G):23,I92B+%&P:0@'Z845^5&F?\%;_ -NKQI_P M;]^*?^"A'AJ\\":5\5OAS>:EI'BR2_\ #4UW8ZE-9ZBEFUQ:QI]67RPK#;!^VC^V'_ ,%M/V2_V3O"?_!5*W\??#+7OAUIVEZ'?^._@I#X M5*WG]E78@C:\;5 VY[IGF5G2&..&WW\"X2)FD /U>HKX+\=_MZ_'"T_X*F?L ME?"KX8?$J+4/A#^TEX'\0>(;K1=4T"V%U9I9Z&;ZU,%S&%=5&=,UNUN-0TD0G4[.&8-): M^:I:,2 ?=+*"P!ZCGH15^ORL_P""+0_:)TS]IW]LGXC_ !D_;%O];TCP1^T' MJEIXQ.K^&+4OK4-EIZQ1S>:A!LXXHHXPL,*[%6$*.*M^,/\ @H_^V[\?/V*) MOVX_V2?$WC^R\6WUH^N^ ?@S9?LR:YK.C:OI:RDP6-UJ::>S3W<\ #&XM;F* M!'D$:JP0RL ?J117YG_M8?\ !27_ (*,^&]=_8QUSX5^ ]!\$K^T+K]OI?B[ MX:^//"%U;:OHNI?9D>6WN+F>4%;99'?<%M8Y]D(*L3(%7[*_8K\"_MQ^ /"' MB;1_VZ?CMX.^(6L2^+KF;PGK7@_PLVD+'H[1Q^5#/ 68+*'$O :3"E099#R M#@_^"D__ 5&\&_\$QM#\*>+_BS^SSX\\4:)XR\5VWAK1M3\&OID@.JW$0.I=892'P4^0Y(R,_27A35M8USP]:ZMK_A:XT2\G0M-I=W<0RR6YR0 M%9X7>,G&#\K$<]:_-'_@ZF_Y-5_9X_[.^\(_^D6K5ZO_ ,%C_P!L;]M3]CKQ M]^S@W[,^N^#7T/XH?'WPYX&U_0];T23[;=F\N&9D2_,LD=M#)'&T3$6CRH7\ MQ'R-M 'W/45_@W,HR>2!S7P!)^ MT[_P4)_92_X*V?!3]E?]ISXZ>#?B'X$_:+T3Q*VE67A_P#_8K>$=1TFS%ZT< M,AN9Y;J%D9(]TSEB7+83;@]]\,OVH/C1^WY^UG\9_@]^S]\8I?AW\/?@7K47 MA74O$FBZ)97VJ^(/%!B:2[C!OXIH+>SM#LB9!"99I"Y$L:J P!U__!/G_@HI M)^W?XU^-7@NY^ 6K> ;KX-?$:3PC?6NMZU;W=S>3QQ[I)&6VW11 -D )+,K# M#!^<5]+U^0G_ 2L_:,UO]B/P9_P4:_:5_:BOK+7M3^'?QPU;4?$5)<&3RE&(J /U# MHK\]/^"G?[87[;7[!7Q1^%'[7:?$6:7]E_7/%%A9?&'2[CP3;_VUX-ANF58; M@R%-WV4NZI*&0RQL-BLS2IL^A_V%/$_[3/QDA\1?M'_%GXD2/X!\7ZG-=?"' MP;<>'+>TO+/0&96M;V]E51(TTZ@R1PD*8H)8Q*&FWB, ^A**** "BBB@ HHH MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** " MBBB@ HHHH *Q/B1\/O#GQ6\"ZG\._%T4KZ;J]L8+Q()2CE"0>&'0\5MT5%6E M3K4Y4ZBO&2::>S3W1K0K5<-6C6I2<91:::W33NFO-,^;/^'4?[(G_0%UW_P= MO_A7R)_P4,^#/[//[/GC72OA?\&].OO[46U-WKT]YJ33"%7XAA / 8@,Y[X* M8ZFOU.HKX?//#_),RR^6'PE*G0FVO?5-2:2ULM8VOWOM?N?IO#/BQQ+DV;1Q M>85JN*IQ3_=NLXQ;:LF_=G=+5VMO9WTL_P ++*:WM[R&>[M!/$DJM+ 7*B10 M->;\14:2 MR^%3!S@W=PK-J2?1Q4(:IK1WTU5M=/+/V?\ ]CSX+?LSZQJ&N?"ZQU"&?4[9 M(+HWM^TP**VX8!'!S7&?\%6AXJU__@GC\9OA-\//AOXD\5^)_'?PN\0>'/#> MB>&M%ENI)[R]TZ:VCWNH\N! TP8O(RC"G&3A3]#45^BX+ X/+L.J&%IJ$%LH MJRUU>A^09CF>89OBWBL;5E4J.UY2=V[*RU?9'YF_LO\ _!.'2_VW/^"#_@K_ M ()U?M8_"OQ3\/\ QQX-\+PQ6EWKN@RP7/AS7();@V>HVDV/+G ZNL4A)BE: M-_++BO7O^"8/QY_;E\9_!5OV2_\ @I!^S?XS\/\ Q)\-0W?A^?XEQ::+O0?% MT$*/''J2743'RI9$3+>:J+(VUE(,OE)]J45U'"?B[^R[X6_;N^#O_!"GXG_\ M$A=7_P""=7Q-;X@^$/A]XZT5O%4MK OAW6+>]EU&YBDTZX21Y[^XD%V(HK>& M!MSA=[Q*69?I#X+7?QH^'/\ P3T_9E_9F_:H_P""<'BSQ/X)7X<0>#?C-X/O M/#MAKTVFBQTVRCM=4-K:S3F:!IHI%\D#[2HU^#^I^%+/4O@G\)_&UK>6T]_P"*(K>62Z^QV6HA M;JTMG8Q0;KA$>0D?>2%&JEK/["G@/XA_\%"_@-^VG_P3I_97^(?P+\>V_C5; MO]H.+4O!UWX=T:7PVT+O>VERKJMG?WDTHCB0V!F5C(\TK?NTD'ZL44 ?D_X# MUC_@HC_P1E_;/^-7@_PK^P;XW^/GP(^-?Q*O_'_A#5_AF8YM1\.ZKJ#*UY9W M$+_=BW!%#.40+&KJ[,\B)['_ ,%+= _;,_:)_P""-?Q9\%^,O@+JT_Q.^*=C MY7ACX6>%(5U.3P] \ML(K*>\B58GD6.&2XFF9@@EFDBB:14BW??M% 'Y;?\ M!6?X5_'W]I+_ (-_O#_[+'P;_9N\?ZO\1M4T'PGI\OA(>%YXKBPFTV6QEO/M M#R!8D5?)958.1*3^[+@,5_33P-XMMO'?A*P\76FBZKIR7T D^P:YIDMG=V[9 M(:.6&4!D8$$>AZJ64ACJT4 ?-/\ P5_TGQEXW_X)O_&'X.?#/X<^(O%7BGQQ M\/\ 5="\.:+X6ZDGN[BV:)-[*-D* ODO(RC (&3@'3_X)GZ+JR?\ !.3X M1_!OXI?#77-!UCPM\*="\+^+?#OBC1I;5X[JUTNWMKF,;QMGB+*P$D99&!ZY M! ^@Z* /SF_89\$_M(_\$E_V5?'7[ .@?L\^-?'E]X9\2:UTG[3I MNO:=J$KW5I%?7I(ATR:WNIIEN#=-$NP!XC-N"UR^O?\ !!KQ9X7_ ."&O@_] MA/X<^*M,N/C%\/-?M?B'H>O3R$6=WXQBN)+F2,NP!\EDFELTD(4A?+D8##"O MU!HH _/7]N'X7_%/_@L3H'P<_9BN_P!G;QMX#\(:9\0=,\8?'2]\<:,UC'9V M]A'(?[!M6>0+]HMO,MDCA+F0ED1NL^-_[-/C[]F;_@K7H__!4/X9^ M=9\4>$O&WPRE\!_&+1_#.GO>ZCIK13Q7.GZS#:1YFO%S"EK+'"KR(FQUC<;] MOV]10!\4?L@_LK?$+XF_\%./BG_P5;^,/@34O"]KJ_@NP\!?"/PWX@A$6I)H MD+I<7>HW4&2;5KBZ7]U"^V9(@WF(A?:/M>BB@ HHHH **** "BBB@ HHHH * M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ KR MW]J/]C[X,?M@:#I7AOXS66H3VNCWCW-D-/OS;L)&3:I454)SIR4H MNS1K1K5L/552E)QDMFMSXE^*G_!#S]E:\^&^N6_PGM=;L_$QTR4Z#<7VN-)" M+H*3&)%*_<+ *3V!)[5^2_C#P?XH^'_BB_\ !7C70;G3-6TRY:WO["\B*202 M*<%6!_GT(P1P:_I"KS7XX_L>?LR_M(W$=]\:O@YI.MW<2!$U%E>"Z"#HGGP, MDA4=E+8'I7KX+-ZE!M5KR3^]'UV2\7XG!2E'&.52+ZWNUZ7W7E='X#^#_!_B MCX@>*+#P5X*T&YU/5M3N5M["PLXB\D\C' 50/Y] ,D\"OUH^%?\ P0\_96L_ MAOH=O\6+36[SQ,-,B.O7%CKC1P&Z*@R"-0OW Q*@]P >]?2'P._8[_9D_9NN M)+[X*_!S2=$NY4*/J*J\]T4/5//G9Y I[J&P?2O2J,;F]2NTJ-XI?>PSKB_$ MXV48X-RIQ76]F_6VR\KG"_LZ_LZ_#7]ESX:Q?"CX46MY#I$-Y+&_\%$/$GBYOC!^SU;^"?@GXZ\51>$?C7;>(O%M]X;\+7%S;Z7I M?]BZO8F=I H$S"6]A)BA\R3:'.WA0WU917D2E*K; MZGSW_P %&/\ @G[\#/\ @J7^R5J/[/\ \6[2>S^W0IJ/A'Q(+%H[_P .ZFJ$ MV]Y&D@5T9=Q62)MI9&>-MI.1\E_LX_LP_P#!5'X'_P#!"KXO? ;3=;O_ /AI M_M2?$S]DO\ 8ZG^ G_!);XG^%K3X)?M$>#?%GQ#\.WT>G0:UJ=W9K(;^YMX M&N-]TLDN]I+^]>W9WFB9@P::2'ZH_;"\'?"?]L?Q3XN_9P_X*" MX]*TV^^'OC?PKX*O->ETN\N+"'[=I\%UI44EU;S0W()%P$6WE#%7;$>UOOFB M@#\7O&?_ 2]_P""F'AS_@EQ^S9\0/#5GJ'C#XR?LQ?%V7QEX3\ ^)]7B?4+ M[PT+UGM])FG5S&;I+>.VS&'(1"\*$LD:GT+]O_XJ_M9_M\>)OV2/B?\ !O\ MX)A_'738_AS^T3HOBCQCI?BW1K'3+JWCMHW:>*)9[I5*JH?%Q.T$#,8E5V+L M(_U?HH _-G3K[]L[X?\ _!9CXE?%#XY?L(?$#XI>'-?\*Z%#^SCK^ERZ=)I/ M@11:XU6WN))KD0Z=--\31+,HN9DAB+O M5WJ93%^WU% 'XB?\%I?VYOVK?VL_^"%OQ!TCXZ_\$Z/B'\(=7TF\\-IX[U;Q MP;>UTR2[76+(;=) D>YO5>4!MSQ11)'N_>NP57_;NOEW_@KQ^P!X^_X*W\5>%E\,_'GX4:??PVVIZG9((5BU+ M3FG98I9XUMK;,)96;[. I/G.4^D/!_[?7BCXQZ4NE_!C]B?XTP>);E-J67Q( M\"7'AFPTZ0\>9=WEWA&B4\M]D^U2$ [(WXKZ-HH _.S_ (*)_LB?M7_#_P#; M*_9M_P""J?P2\-7OQ6\1?""QN_#GQ:\*:%;0VU]K>B7T4B37FG6S.$:2!KBY M=;;>7;,(W-L=CTOQ?^#/BC_@IA^WO^SK\<+/X1^+_"OPT^ %_JOBC4]5\>^& MY]%O-9UN>*"*QL+6SNE2Y"P/$9YIWC6)@$2-G)8K]W44 ?G?^P#H/Q5\!_\ M!7[]LS]H'X@? #X@Z'X)^+*^$)? 7B/4/!]V(=271M)GM[O*(C2PLS',:RHC M2<*HWLJ%O_!'O1_BM\!OBG^U[XK^-O[//Q$\,6/C_P#:!UKQOX,DO_!MU(VJ MZ1<%4C:-8$RO=6M9H)8Y5W1.<%E9 V]2O(P5)^G_ (V:U\7_ M -OG_@D+X9_8'^#?[._CO2/'GQ$\ >'- UZ_\5>$[FUT/PQ8A+5KS4GU-U%I M>QB&*1HH[26::1I(@8T^?;]6?\%./V/O'W[?7[&OC#]D3P3\4M)\'1>-[)+/ M5==U/P_+J300+/%*?*B2X@&\^7MRS$#=G!Q7HW[-7PY\<_!_X#^$_A/\1/%6 MEZYJ?AG0+/2GU;1]*DLH;M+>!(5D\F2:8QLP3)&]AD\4 ?"'_!07]G'XN?LH M?M;?L2_M;_ #]G3QI\4O G[/FD:]X/\ %'AWP+9)>ZW;V-]HT6G6=U%;ET\Y M4V.TF" -J@D;\B+X5Z)^V/XL_P"#@FT_;0\2?L+^.-#^'WB#]EZ#PDNHW=YI M_F:*\NO&\1M0+7"Q"<+ S26UI)=21I-"2"S.J?I;10!^;7["'P)_:.^$'[8O M[8/[-GQ8_91\7/X/^.'Q7U/Q-I?Q.M[NSCT-=%O[-HW7S3*9FNAE46%(F.YB M7,:J6/FW_!//X[?\%8_^"7_P[MO^"87Q9_X)@>-_C"/!=Y<:?\+/BIX(U2WM M]#U72WF=[87]S/F.Q5 ^-S'S%CPIB+1[I/UNHH _-3_@I9\/_P!JWQ)^T+^Q M1XCN/@UXL^(FJ_"SXF#Q+\7-=\$^%Y#IVG1S11I)]G+!#-&C-($C3S)?*A&_ M,C#=^DUA>PZC8PZA;I*L<\2R(L\#Q. PR R. R-SRK $'@@&I:* /S3_ .#D M/X9_'K]I'X0_!WX2_LV?LY^.?'FL>$?CUH?C3Q /#^@.;>VTVSM;Z-P+B79% M)*S7* (C,1M;=MXSK?\ !9C2_BM^T=J/[)/B#X$?L[?$;Q-#X%_:9\,?$#Q? M':^#+N"72M'T^:9;@R+<)&3-DG;"NYF5=P&UXV?]%J* /SN_;[T/XI^/_P#@ MKY^QE^T-\/?@!\0M<\$?"B/Q=-X\\16/@V\\K34UK2(+>T'ENBRRLK#,J1HS M1\JP#JR+PW[-WA?]K'_@D5_P4:_:"TC5_P!D+XB?%3X+_M"^/YO'?A+QA\+M M)CU*XT+5[IY)+JRO[=I4,,9:4(LS$*!#&+/AE8?M ^/M3U7P/XI\27%BUG%.4/V=)5BN&FE"S1P,T MD$_L3_MS?\%BK#X8:'^PG\8?^"6?BVP^*WAW3(O#Q^,FHZE M/!IBA00IK4\X)\]EC42M;6Y=IW4A3%YF(_TYHH ^3OVB?!>N_MJ_&Z']@[XN M_"_QH?@QI_AS[?X]\47NDR6UGX[OU*"#2%N(=GE6Z'-U.RB-9I(X84)C\Y'\ MF_X(P7/[7/[*6K^,/^"<'Q_^$7Q#U7X<> O$%S;? 7XPZSH,BPZEX?#,T6GW MA/SPO ORQ2NJQNGR#8$B#_H510 4444 %%%% !1110 4444 %%%% !1110 4 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11 M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11 M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11 M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11 M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11 M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4 M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% '__ !V0$! end GRAPHIC 17 spsc-20231231_g4.jpg begin 644 spsc-20231231_g4.jpg M_]C_X 02D9)1@ ! 0$ 9 !D #_VP!# ," @," @,# P,$ P,$!0@%!00$ M!0H'!P8(# H,# L*"PL-#A(0#0X1#@L+$!80$1,4%145# \7&!84&!(4%13_ MVP!# 0,$! 4$!0D%!0D4#0L-%!04%!04%!04%!04%!04%!04%!04%!04%!04 M%!04%!04%!04%!04%!04%!04%!04%!3_P 1" !) $P# 2( A$! Q$!_\0 M'P 04! 0$! 0$ $" P0%!@<("0H+_\0 M1 @$# P($ P4% M! 0 %] 0(# 01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D* M%A<8&1HE)B7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7& MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$ P$! 0$! M 0$! 0 $" P0%!@<("0H+_\0 M1$ @$"! 0#! <%! 0 0)W $" M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$ MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4 MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,! (1 Q$ /P#]4ZJZEJ=I MH]C->WUS%:6D*[Y)IF"H@]233M0U"VTFQN+V\F6WM;>-I999#A44#))KYEMY M=6_:L\;2!FN--^'6E2\HIVM=..F?]H]?]D>YKU<#@?K7-5J2Y:II"/YMOI%=7]QV,_QP\0?$35)M+^&6B+=PQ-LEU[4P4M8 M_=1U/\_]G%;%C\%=6UC$_C'QOK.L3MRUI8S&SM1[!4Y/UXKM[BZ\-_"WPQ'Y MLEGH.BVB[$!PBCV ZLQ_$FO'_$W[9OA/2R\>DV%]K,BG <@01G\3EO\ QVO5 MHQQ.*]S*J%HKK:\GZR>WHK'S^*E@<"E4X@Q:E-Z\MVHKTIK5KSES-GL_A7P; MI/@JQDM-(MFMX9'\Q]\KR,S8QDLQ)/YUM5\8ZY^V+XRUR0V^AZ79Z<7.$\N- MKB;\,\?^.UC_ /"._&[XJ9^TKK36LG474OV2''KL)4$?0&NO_5O%-^UQ]:-. M_63N_P"OF>:N-\ DL/E&&G6MLHQM'_-?^ GV?>>,-!T^8Q76MZ?;RCJDMTBL M/P)K1L[^VU*W6>TN(KJ%NDD+AU/XBOCFQ_8K\5W4/F7NLZ9;2G_EFN^3\S@5 MSOB#X7?$OX S?VS8W4@LXR-U]I]..1Y?7?LL-C$Y]FK)_ MC_F*?%6<82/UC&Y9*-+JU*[2[M6_.Q]WT5XK\ _VA[;XI1_V3JB1V7B.%-VU M3A+I1U9!V([K^(]O:J^5Q>$K8&LZ%>-I+^KH_0,NS+#9KAHXK"2YH/\ !]FN MC1\T_M9^.KR^NM)^'NBL7O-2='NDC/+!FQ%&?JW)^@KW#P)X1L/AKX)L=(M] ML<%E!NFFZ;WQEY#]3DU\V?#F8?$?]K35]6D'F0:>\\L0/98P(4/Z@_6OJ[5= M/CU?2[NQE++%J_M3?&!--.H'3M'0R-;1MRL,*]6"\9=N/S]!7MOA MO]F_X5:#?1VES6A7/T(->&:I^RC\0M*\026^FVD=W:AR M(M0CNDC4KV)!(8''48-<9\3OA5K_ ,(]0T^/6+BU:XNXS-&UG,7*X.#G(!!S M_P#KK[>=*CC.3#8#&*$>72,=_-MWOZH_*:6(Q.6>UQV;Y8ZM3FO*<[V5[))) MIKT:OT/T'T/PCHGAF+R])TBRTY,8(MH%3/UP.:UMPSC(S7P7I'Q"^,'Q3A73 M]'OM4O8[=%B2P MZC>K'!&>E?-QX8G4J^SKXJ/M'TW;^]IGW$N/:=&@J^#P$W16\OABON37XH_1 MJHYH8[F%XIHUEBD4JR.,A@>H(KSWX#^.KKQO\*]+U?5I5^V+OAGG8A0Y1B-Y M]R,9]\U:\2?'3P+X5W"]\26;RK_RQM6\]\^F$S@_6OCY8+$1KRP\(N4HNVB; MV/TJ&:X.>$IXRI44(3BFN9I:-7ZGRO\ 'SX;S_!'X@6&O^'2]KIMS+]HM&3I M;S**^?/A+^T#?_ R\+R:/$%DB-R\Z M[ESMW*H('XJ3^-?<5,+7SS+HIK]_1ERN^]O/^MTS\II9AA.%,ZFXR_V3$P4X MVV3\O+?Y-=CJOV/;CS/B[KQF_P!?)83'GU\Z,G_/M7TA\6/C!HOPCTF*ZU,2 M7%U<$BVLX<;Y,=3D\!1D9/OWKY5^'MRWPH_:;:QN_P!U ;^6Q(;75M?MY[Z2V@$$=OYS)$!N+9(7!)Y]>PKGSR.&_M*GB, M5=TI03TW?E^1V<*3QW]B5\'@.58BG4E'WME=ZMZ/SMYH^:UH[>./&/GQI-*EM"U\/+DD)!("1X&U0 M 3T ]*^\O#W@7P]X3C":/HMCIW&"T$"JQ^K8R?QKY_\ VX-6,>A^&=-!_P!= M<2W!7_<4*/\ T.NS*LK+5_EW9YO$.08ZGE=;'9OC957 M%:16D>9M).W7?LB;]D74-)\(_#+5=5U;4;338[J_8![J98\JB*.,GGDM7FG[ M47QHT[XE:I8:7H;&?2M.+N;HKCSI&P,J#SM 'XY/M57X<_LL>*/'VC6.K27M MGI6E72^9&\K,\I4_Q! /YL*H?'[X(K\(;K1A9-LV[+HM+?-VT_0^;QF(SO_5J&&^K>SPT5&\F_>E=W M6G1-Z[?,A\"_"+XC?$SP_9QV"S1^'XV80->7!BMP226*KU/)/(!KUGPK^Q*B M21R^(O$)E4'+6VGQ8S[;V_\ B:\QT_\ :@\=Z7X8L-(TQ[.SM]/@2!9XK0,^ MQ0%&[=E<].<5[?\ LQ_'S6/B/J5]H/B%DN;Z* W,-W'&J%E#!65@H S\PP0! MWK'-:F=T*-2O3<803VC\5N[NOOL=/#U'A;%XBCA:RJ5*LDM9Z1NELDG>W17N MCUWQ!H-AH?PSU32+.!;;3K?3)H(XEZ*@C(_&OS4\IWR51F'J!7Z-_''75\._ M"7Q/>$X8V;P)_O2?NQ^K5X#^SO\ ^T\:?#]M6U#?$9KR00X_BC4*,_]]!A^ M%>5P]C8Y?@JV+KO1R2^=KL^AXTRJ><9GA_H<^U>FZII=KK6FW-A?0) M(!KW@E[R^L8V,D4EH2;FV_V64OGX.MA\WP<QF>%QO#F9SSG 4W4HU?XL%NG_,OS^^^CNOM.O _CQ\%=>^+_ ,0-"6!X M[+0;.UQ/>R."0S.2RJG4G 7K@<]:\LT7]LSQ=I%O]EU;2K'4;B/Y3-(K0R$C MKN XS] *IW_[4WQ*\93?9=#M8K1V&/+TRS,TGYMN_0"NC Y#FN K^VI\J:3] MYO37K_PZ./-.+N'LWPGU:M[22;3<(QLW9WL^GW/YGV9I.F6GAO1;/3[8""RL MH%AC#' 5%4 9/T%<;XS^+?P[TNUDM=(6.0VKW915_[9DDC_OFNT\-_L17$FU]?\21QC^*'3X2W_C[8_P#0 M:Y_[*R[#2Y\9C+R[0U=_77\CL_U@SO'0]GEF6.,-DZFBMZ>[IZ-C?B%^TYX3 M3PKJ>@^#/#^QKV%[=IY+=(8D# @L$'+'!XSBNJ_9(^$EYX2TN[\3ZO UM>ZC M&(K:"19_M3>);KQMXGT'X;:" MWVB[EF66[5#P'/"*WH%4LY]L&OH7P7X7MO!?A72]#M!^XLH%B#8^\0/F;ZDY M/XUY+\'?A+>_#_3=2\:^(4_M/QC>HT\B32X)KTNBM:,J,'>K!R^=OOT?Z'/BJ>) MJ12P]10[MQYONU27S3/%;W5_BQ\1U-OI6DP> -+DX:^U"037A7U1!]T_7!]Z MZ;X;?!'0OAW,^H9EUC7YB6FU:^.^4D]=O]T'\SW)KT2BNRIF%25-T:,5"#W4 J>OJW=O[[>1YM')Z,:RQ.)DZM1;.5O=_PQ248^J5_,*3 ]*6BO+/?/__9 end XML 18 R1.htm IDEA: XBRL DOCUMENT v3.24.0.1
Cover - USD ($)
$ in Billions
12 Months Ended
Dec. 31, 2023
Feb. 13, 2024
Jun. 30, 2023
Cover [Abstract]      
Document Type 10-K    
Document Annual Report true    
Current Fiscal Year End Date --12-31    
Document Period End Date Dec. 31, 2023    
Document Transition Report false    
Entity File Number 001-34702    
Entity Registrant Name SPS COMMERCE, INC.    
Entity Incorporation, State or Country Code DE    
Entity Tax Identification Number 41-2015127    
Entity Address, Address Line One 333 South Seventh Street    
Entity Address, Address Line Two Suite 1000    
Entity Address, City or Town Minneapolis    
Entity Address, State or Province MN    
Entity Address, Postal Zip Code 55402    
City Area Code 612    
Local Phone Number 435-9400    
Title of 12(b) Security Common Stock, par value $0.001 per share    
Trading Symbol SPSC    
Security Exchange Name NASDAQ    
Entity Well-known Seasoned Issuer Yes    
Entity Voluntary Filers No    
Entity Current Reporting Status Yes    
Entity Interactive Data Current Yes    
Entity Filer Category Large Accelerated Filer    
Entity Small Business false    
Entity Emerging Growth Company false    
ICFR Auditor Attestation Flag true    
Entity Shell Company false    
Document Financial Statement Error Correction false    
Entity Public Float     $ 7.0
Entity Common Stock, Shares Outstanding   36,973,665  
Documents Incorporated by Reference
DOCUMENTS INCORPORATED BY REFERENCE
Portions of the Company’s definitive Proxy Statement for the Annual Meeting of Stockholders to be held on May 16, 2024 (the “2024 Proxy Statement”), which is expected to be filed within 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K, are incorporated by reference in Part III of this Annual Report on Form 10-K.
   
Entity Central Index Key 0001092699    
Document Fiscal Year Focus 2023    
Document Fiscal Period Focus FY    
Amendment Flag false    

XML 19 R2.htm IDEA: XBRL DOCUMENT v3.24.0.1
Audit Information
12 Months Ended
Dec. 31, 2023
Audit Information [Abstract]  
Auditor Firm ID 185
Auditor Name KPMG, LLP
Auditor Location Minneapolis, MN
XML 20 R3.htm IDEA: XBRL DOCUMENT v3.24.0.1
Consolidated Balance Sheets - USD ($)
$ in Thousands
Dec. 31, 2023
Dec. 31, 2022
Current assets    
Cash and cash equivalents $ 219,081 $ 162,893
Short-term investments 56,359 51,412
Accounts receivable 50,160 42,501
Allowance for credit losses (3,320) (3,066)
Accounts receivable, net 46,840 39,435
Deferred costs 62,403 52,755
Other assets 16,758 16,319
Total current assets 401,441 322,814
Property and equipment, net 36,043 35,458
Operating lease right-of-use assets 7,862 9,170
Goodwill 249,176 197,284
Intangible assets, net 107,344 88,352
Other assets    
Deferred costs, non-current 20,347 17,424
Deferred income tax assets 505 227
Other assets, non-current 1,126 2,185
Total assets 823,844 672,914
Current liabilities    
Accounts payable 7,420 11,256
Accrued compensation 41,588 30,235
Accrued expenses 8,014 7,451
Deferred revenue 69,187 57,423
Operating lease liabilities 4,460 4,277
Total current liabilities 130,669 110,642
Other liabilities    
Deferred revenue, non-current 6,930 4,771
Operating lease liabilities, non-current 9,569 13,009
Deferred income tax liabilities 8,972 7,419
Other liabilities, non-current 229 0
Total liabilities 156,369 135,841
Commitments and contingencies
Stockholders' equity    
Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding 0 0
Common stock, $0.001 par value; 110,000,000 shares authorized; 38,971,146 and 38,309,144 shares issued; and 36,820,048 and 36,158,046 shares outstanding, respectively 39 38
Treasury Stock, at cost; 2,151,098 shares (128,892) (128,892)
Additional paid-in capital 537,061 476,117
Retained earnings 259,045 193,221
Accumulated other comprehensive gain (loss) 222 (3,411)
Total stockholders’ equity 667,475 537,073
Total liabilities and stockholders’ equity $ 823,844 $ 672,914
XML 21 R4.htm IDEA: XBRL DOCUMENT v3.24.0.1
Consolidated Balance Sheets (Parenthetical) - $ / shares
Dec. 31, 2023
Dec. 31, 2022
Statement of Financial Position [Abstract]    
Preferred stock, par value (in dollars per share) $ 0.001 $ 0.001
Preferred stock, shares authorized (in shares) 5,000,000 5,000,000
Preferred stock, shares issued (in shares) 0 0
Preferred stock, shares outstanding (in shares) 0 0
Common stock, par value (in dollars per share) $ 0.001 $ 0.001
Common stock, shares authorized (in shares) 110,000,000 110,000,000
Common stock, shares issued (in shares) 38,971,146 38,309,144
Common stock, shares outstanding (in shares) 36,820,048 36,158,046
Treasury stock, shares (in shares) 2,151,098 2,151,098
XML 22 R5.htm IDEA: XBRL DOCUMENT v3.24.0.1
Consolidated Statements of Comprehensive Income - USD ($)
shares in Thousands, $ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Income Statement [Abstract]      
Revenues $ 536,910 $ 450,875 $ 385,276
Cost of revenues 182,069 153,065 131,678
Gross profit 354,841 297,810 253,598
Operating expenses      
Sales and marketing 122,936 101,772 88,044
Research and development 53,654 45,748 39,038
General and administrative 84,887 67,340 61,305
Amortization of intangible assets 16,116 11,768 10,126
Total operating expenses 277,593 226,628 198,513
Income from operations 77,248 71,182 55,085
Other income (expense), net 8,315 142 (1,544)
Income before income taxes 85,563 71,324 53,541
Income tax expense 19,739 16,190 8,944
Net income 65,824 55,134 44,597
Other comprehensive income (expense)      
Foreign currency translation adjustments 3,393 (2,240) (514)
Unrealized gain (loss) on investments, net of tax of $644, $147, and $(34), respectively 1,932 441 (102)
Reclassification of (gain) loss on investments into earnings, net of tax of $(564), $(55), and $63, respectively (1,692) (165) 190
Total other comprehensive income (expense) 3,633 (1,964) (426)
Comprehensive income $ 69,457 $ 53,170 $ 44,171
Net income per share      
Basic (in dollars per share) $ 1.80 $ 1.53 $ 1.24
Diluted (in dollars per share) $ 1.76 $ 1.49 $ 1.21
Weighted average common shares used to compute net income per share      
Basic (in shares) 36,646 36,117 35,928
Diluted (in shares) 37,475 36,953 36,962
XML 23 R6.htm IDEA: XBRL DOCUMENT v3.24.0.1
Consolidated Statements of Comprehensive Income (Parenthetical) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Income Statement [Abstract]      
Unrealized gain (loss) on investments, tax $ 644 $ 147 $ (34)
Reclassification of unrealized (gain) loss on investments into earnings, tax $ (564) $ (55) $ 63
XML 24 R7.htm IDEA: XBRL DOCUMENT v3.24.0.1
Consolidated Statements of Stockholders' Equity - USD ($)
$ in Thousands
Total
Common Stock
Treasury Stock
Additional Paid-in Capital
Retained Earnings
Accumulated Other Comprehensive Gain (Loss)
Beginning balance (in shares) at Dec. 31, 2020   35,487,217        
Beginning balance at Dec. 31, 2020 $ 420,721 $ 37 $ (65,247) $ 393,462 $ 93,490 $ (1,021)
Beginning balance (in shares) at Dec. 31, 2020     1,613,250      
Increase (Decrease) in Stockholders' Equity [Roll Forward]            
Stock-based compensation 25,686     25,686    
Shares issued pursuant to stock awards (in shares)   642,417        
Shares issued pursuant to stock awards 9,374 $ 1   9,373    
Employee stock purchase plan (in shares)   55,726        
Employee stock purchase plan activity $ 4,737     4,737    
Repurchases of common stock (in shares) (176,103) (176,103) (176,103)      
Repurchases of common stock $ (20,430)   $ (20,430)      
Net income 44,597       44,597  
Foreign currency translation adjustments (514)         (514)
Unrealized gain (loss) on investments, net of tax (102)         (102)
Reclassification of gain (loss) on investments into earnings, net of tax 190         190
Ending balance (in shares) at Dec. 31, 2021   36,009,257        
Ending balance at Dec. 31, 2021 484,259 $ 38 $ (85,677) 433,258 138,087 (1,447)
Ending balance (in shares) at Dec. 31, 2021     1,789,353      
Increase (Decrease) in Stockholders' Equity [Roll Forward]            
Stock-based compensation 31,275     31,275    
Shares issued pursuant to stock awards (in shares)   440,427        
Shares issued pursuant to stock awards 4,908     4,908    
Employee stock purchase plan (in shares)   70,107        
Employee stock purchase plan activity $ 6,676     6,676    
Repurchases of common stock (in shares) (361,745) (361,745) (361,745)      
Repurchases of common stock $ (43,215)   $ (43,215)      
Net income 55,134       55,134  
Foreign currency translation adjustments (2,240)         (2,240)
Unrealized gain (loss) on investments, net of tax 441         441
Reclassification of gain (loss) on investments into earnings, net of tax $ (165)         (165)
Ending balance (in shares) at Dec. 31, 2022 36,158,046 36,158,046        
Ending balance at Dec. 31, 2022 $ 537,073 $ 38 $ (128,892) 476,117 193,221 (3,411)
Ending balance (in shares) at Dec. 31, 2022 2,151,098   2,151,098      
Increase (Decrease) in Stockholders' Equity [Roll Forward]            
Stock-based compensation $ 42,975     42,975    
Shares issued pursuant to stock awards (in shares)   598,361        
Shares issued pursuant to stock awards 9,856 $ 1   9,855    
Employee stock purchase plan (in shares)   63,641        
Employee stock purchase plan activity $ 8,114     8,114    
Repurchases of common stock (in shares) 0          
Repurchases of common stock $ 0          
Net income 65,824       65,824  
Foreign currency translation adjustments 3,393         3,393
Unrealized gain (loss) on investments, net of tax 1,932         1,932
Reclassification of gain (loss) on investments into earnings, net of tax $ (1,692)          
Ending balance (in shares) at Dec. 31, 2023 36,820,048 36,820,048        
Ending balance at Dec. 31, 2023 $ 667,475 $ 39 $ (128,892) $ 537,061 $ 259,045 $ 222
Ending balance (in shares) at Dec. 31, 2023 2,151,098   2,151,098      
XML 25 R8.htm IDEA: XBRL DOCUMENT v3.24.0.1
Consolidated Statements of Cash Flows - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Net Cash Provided by (Used in) Operating Activities [Abstract]      
Net income $ 65,824 $ 55,134 $ 44,597
Reconciliation of net income to net cash provided by operating activities      
Deferred income taxes (10,079) (3,732) 3,881
Depreciation and amortization of property and equipment 18,631 16,421 14,788
Amortization of intangible assets 16,116 11,768 10,126
Provision for credit losses 5,707 3,359 4,717
Stock-based compensation 45,508 33,399 27,574
Other, net 2,415 220 323
Changes in assets and liabilities, net of effects of acquisitions      
Accounts receivable (11,949) (6,435) (4,959)
Deferred costs (10,724) (10,646) (9,299)
Other assets and liabilities 1,834 2,632 (6,181)
Accounts payable (3,947) 144 2,259
Accrued compensation 7,143 (3,786) 6,775
Accrued expenses 1,302 (2,829) 1,017
Deferred revenue 6,464 5,965 14,483
Operating leases (1,947) (1,562) 2,792
Net cash provided by operating activities 132,298 100,052 112,893
Cash flows from investing activities      
Purchases of property and equipment (19,761) (19,880) (19,588)
Purchases of investments (133,994) (160,427) (121,242)
Maturities of investments 131,331 158,937 111,193
Acquisition of business, net (70,218) (91,420) (17,066)
Net cash used in investing activities (92,642) (112,790) (46,703)
Cash flows from financing activities      
Repurchases of common stock 0 (43,215) (20,430)
Net proceeds from exercise of options to purchase common stock 9,856 4,908 9,374
Net proceeds from employee stock purchase plan activity 8,114 6,676 4,737
Payments for contingent consideration (2,000) 0 (2,042)
Net cash provided by (used in) financing activities 15,970 (31,631) (8,361)
Effect of foreign currency exchange rate changes 562 (290) 31
Net increase (decrease) in cash and cash equivalents 56,188 (44,659) 57,860
Cash and cash equivalents at beginning of period 162,893 207,552 149,692
Cash and cash equivalents at end of period 219,081 162,893 207,552
Supplemental Cash Flow Information [Abstract]      
Cash paid for income taxes 29,207 16,076 9,979
Non-cash financing activity:      
Contingent consideration related to acquisition $ 0 $ 2,000 $ 0
XML 26 R9.htm IDEA: XBRL DOCUMENT v3.24.0.1
General
12 Months Ended
Dec. 31, 2023
Organization, Consolidation and Presentation of Financial Statements [Abstract]  
General General
Business Description
SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.
Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.
Basis of Presentation
The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements.
Foreign Currency Translation
The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies are included in other income (expense), net in our consolidated statements of comprehensive income.
Use of Estimates
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.
Business Combinations
We allocate the fair value of purchase consideration to the tangible assets acquired, liabilities assumed, and intangible assets acquired based on their estimated fair values as of the acquisition date. The excess of the fair value of purchase consideration over the fair values of these identifiable assets and liabilities is recorded as goodwill.
Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We record the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred, if present. The unsettled earn-out liability, if any, is subsequently remeasured at each reporting date at fair value through earnings.
While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed. Any such adjustments would be recorded as an offset to goodwill or a working capital purchase price adjustment as applicable. Upon the conclusion of the measurement period or final determination of the fair values, whichever comes first, any subsequent adjustments would be recorded in our consolidated statements of comprehensive income.
Segment Information
Our Chief Executive Officer acts as the Company’s chief operating decision maker and reviews financial information presented on a consolidated basis for purposes of allocating resources and evaluating financial performance. There are no segment managers who are held accountable by the chief operating decision maker, or anyone else, for operations, operating results and planning for levels or components below the consolidated unit level. Accordingly, we determined we have one operating and reportable segment, which is supply chain management products.
Concentration of Credit Risk
Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits, accounts receivable, and investments. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. Concentrations of credit risk with respect to accounts receivable are subject to the financial condition of our customers, which are routinely assessed for potential credit losses. We believe that the receivable credit risk exposure is limited. Our investment policy limits the amount of credit exposure with any one financial institution or commercial issuer and sets requirements regarding credit rating and investment maturities to safeguard liquidity and minimize risk.
Cash and Cash Equivalents
Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days.
Investments
We invest in money market funds, certificates of deposit, and/or marketable securities such as commercial paper, highly liquid debt instruments of the U.S. government, and U.S. corporate debt securities. Investments with remaining maturities of less than one year from the balance sheet date are classified as short-term investments whereas those with remaining maturities of more than one year from the balance sheet date are classified as investments, non-current.
Securities classified as available for sale are carried at fair value and the unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive gain (loss) in the consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the consolidated statements of comprehensive income. Certain securities accrue interest that is included in other income (expense), net. If a determination has been made that the fair value of a marketable security is below its amortized cost basis, the portion of the unrealized loss that corresponds to a credit-related factor is realized through a credit allowance on the marketable security and the equivalent expense is realized in other income (expense), net in the consolidated statements of comprehensive income.
Fair Value Measurements
The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature.
Recurring Fair Value Measurements
We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that are used to measure fair value are:
Level 1 – quoted prices in active markets for identical assets or liabilities.
Level 2 – observable inputs other than Level 1 prices, such as (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities.
Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities.
Nonrecurring Fair Value Measurements
We measure certain assets and liabilities at fair value on a nonrecurring basis, including long-lived assets, goodwill, and indefinite-lived intangible assets.
Accounts Receivable
Accounts receivable are initially recorded upon the sale and invoicing of products to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for credit losses, which represent estimated losses resulting from customers not making required payments on accounts receivables. When determining the allowance, we pool our outstanding accounts receivable invoices based on the contractual due date of payment. We take several factors into consideration for estimated credit losses by pool, primarily our historical credit losses, with additional adjustments made for current and future macro-economic conditions and retail bankruptcy trends. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowance are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income.
Property and Equipment
Property and equipment, including assets acquired under lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization expense is calculated using the straight-line method over the estimated useful lives, commencing on the earlier date in which the asset is placed in service or ready for its intended use.
The estimated useful lives of property and equipment were as follows:
Estimated Useful Life
Internally developed software3 years
Computer equipment
3 years
Office equipment and furniture
5-7 years
Leasehold improvementsShorter of the useful life of the asset or the remaining term of the lease
Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred. The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals with the resulting gain or loss included in our consolidated statements of comprehensive income.
We capitalize and amortize eligible costs to acquire or generate internally developed software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Additionally, maintenance of internally developed software are expensed as incurred. The assets and related accumulated amortization are adjusted for abandoned internally developed software with the resulting loss included in our consolidated statements of comprehensive income.
Leases
We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and non-current operating lease liabilities in our consolidated balance sheets.
Right-of-use (“ROU”) assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We use the implicit interest rate when readily determinable. We estimate the discount rate for a similar collateralized asset by estimating costs of borrowing. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change.
Research and Development
Research and development costs primarily include development, maintenance, and data conversion activities related to our cloud-based supply chain management products and are expensed as incurred. Research and development costs are net of amounts capitalized as developed software.
Goodwill
Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. Goodwill is attributed to a trained workforce and other buyer-specific value resulting from expected synergies, including long-term cost savings, which are not included in the fair values of identifiable assets.
We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount exceeds the fair value of the reporting unit, we would recognize an impairment loss in the consolidated statements of comprehensive income, to the extent that the carrying amount exceeds fair value.
Intangible Assets
Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships and developed technology. We recognize the fair value of the identifiable intangible assets acquired separately from goodwill. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable.
The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives.
The estimated useful lives for intangible were as follows:
Estimated Useful Life
Subscriber relationships
7-10 years
Developed technology
5-10 years
Impairment of Long-Lived Assets
We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured and recorded as an expense in the consolidated statements of comprehensive income as the amount by which the carrying amount of a long-lived asset exceeds its fair value.
Revenue Recognition
Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.
We determine revenue recognition through the following steps:
Identification of the contract, or contracts, with a customer
Identification of the performance obligations in the contract
Determination of the transaction price
Allocation of the transaction price to the performance obligations in the contract
Recognition of revenue when, or as, we satisfy a performance obligation
See Note C for further descriptions of our revenue recognition policy.
Deferred Costs
Deferred costs are those that are incurred to fulfill or obtain customer contracts and that are considered incremental and recoverable costs. These consist primarily of customer implementation costs and certain commissions paid to sales personnel and referral partners, respectively. These costs are deferred and amortized over the expected period of benefit which we have determined primarily to be two years.
Customer implementation costs are based on actual costs incurred. Related amortization expense is included in cost of revenues in the consolidated statements of comprehensive income.
Sales commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. Related amortization expense is included in sales and marketing expenses in the consolidated statements of comprehensive income.
Stock-Based Compensation
Stock-based compensation includes grants of incentive and nonqualified stock options, performance share units (“PSUs”), restricted stock awards (“RSAs”), restricted stock units (“RSUs”), deferred stock units (“DSUs”), employee stock purchase plan (“ESPP”) activity, and 401(k) stock match and is used to compensate employees, executive officers, and non-employee directors.
We recognize the cost of all stock-based payments based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. For all awards, we recognize forfeitures as they occur.
RSAs result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested, or released according to the terms of the agreement.
Our ESPP allows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of our common stock at the beginning or end of each stock purchase period. The plan is a Type B plan, so the number of shares a participants can acquire is variable. Participants purchase more shares as the stock price decreases, up to the total amount originally elected to withhold at the beginning of the offering period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year.
The fair value of stock options and ESPP activity is estimated using the Black-Scholes option valuation model. The fair value for RSAs, RSUs, and DSUs is the closing market value of the underlying stock on the date of grant less the purchase price (if any). The fair value of PSUs is estimated using a Monte Carlo simulation.
Judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is derived from historical data on option holder exercises and post-vesting employment termination behavior.
Additional valuation inputs include our expected non-issuance of future common stock dividends and the risk-free interest rate that is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equaling the expected life at the grant date. For PSUs, the Monte Carlo simulation utilizes multiple input variables that determine the probability of satisfying the performance conditions stipulated in the award.
Income Taxes
We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the consolidated financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgment, it is more likely than not that some or all of the deferred tax asset will not be realized. Deferred tax positions are net by jurisdiction on the consolidated balance sheet.
We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results.
We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority.
It is our practice to recognize interest and penalties accrued on any unrecognized tax benefits as a component of income tax expense.
Net Income Per Share
Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share.
Accounting Pronouncements Recently Adopted
StandardDate of IssuanceDescription
Date of Adoption
Effect on the Financial Statements
ASU 2021-08, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers
October 2021This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.
January 2023The adoption of this standard has not had a material impact on the purchase accounting for business combinations.
Accounting Pronouncements Not Yet Adopted
StandardDate of IssuanceDescriptionDate of Required AdoptionEffect on the Financial Statements
ASU 2023-09, Income Taxes (Topic 740) - Improvements to Income Tax Disclosures
December 2023This amendment requires that an entity disclose specific categories in the effective tax rate reconciliation table as well as provide disclosure of disaggregated information related to income tax expense, income before income taxes, and income taxes paid. January 2024We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.
ASU 2023-07, Segment Reporting (Topic 280) - Improvements to Reportable Segment Disclosures
November 2023This amendment requires that an entity disclose significant segment expenses impacting profit and loss that are regularly provided to the chief operating decision maker.January 2024We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.
XML 27 R10.htm IDEA: XBRL DOCUMENT v3.24.0.1
Business Acquisitions
12 Months Ended
Dec. 31, 2023
Business Combination and Asset Acquisition [Abstract]  
Business Acquisitions Business Acquisitions
TIE Kinetix
Effective September 13, 2023, we acquired all of the outstanding equity ownership interests of TIE Kinetix Holding B.V. ("TIE Kinetix"), a leading provider of supply chain digitalization including EDI and e-invoicing in Europe and the United States. Pursuant to the definitive agreement, the purchase price was €63.9 million ($68.7 million at the September 13, 2023 exchange rate), net of cash acquired. The purchase accounting for the acquisition has not been finalized as of December 31, 2023; provisional amounts are primarily related to intangible assets and tax components. We expect to finalize the allocation of the purchase price within the one-year measurement period following the acquisition. The goodwill associated with the acquisition is not deductible for income tax purposes.
Purchase Price Allocation
We accounted for the acquisition as a business combination. We allocated the purchase price to the tangible and identifiable intangible assets acquired and liabilities assumed based on their estimated fair values as of the acquisition date.
The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date:
(in thousands)Acquisition Date Estimated Fair Value as of
September 30, 2023
AdjustmentAcquisition Date Estimated Fair Value as of
December 31, 2023
Cash paid$73,558 $— $73,558 
Estimated fair value of assets and liabilities acquired:
Cash$4,859 $— $4,859 
Accounts receivable1,347 (80)1,267 
Other assets2,981 659 3,640 
Intangible assets
Subscriber relationships18,183 11,137 29,320 
Developed technology12,122 (4,279)7,843 
Current liabilities(3,606)(232)(3,838)
Deferred revenue(6,421)— (6,421)
Deferred income tax liabilities, net(6,112)(1,757)(7,869)
Total fair value of assets and liabilities acquired$23,353 $5,448 $28,801 
Goodwill$50,205 $(5,448)$44,757 
The following table summarizes the estimated useful lives for each acquired intangible asset, each of which are subject to finalization:
Estimated Useful Life
Subscriber relationships8.0 years
Developed technology6.0 years
Other Acquisition Activity
In the year ended December 31, 2023, we had other acquisition activity resulting in a total purchase price of $1.5 million, paid in cash. Assets acquired were primarily comprised of developed technology and customer relationships, totaling $0.9 million of estimated fair value. The remainder of the consideration transferred, $0.6 million, was allocated to goodwill.
Effective October 4, 2022, we acquired all of the outstanding equity ownership interests of Canadian based InterTrade Systems Inc. ("InterTrade"), a leading EDI provider within the apparel and general merchandising markets. Pursuant to the definitive agreement, the purchase price was $49.1 million, including estimated post-closing adjustments. In the year ended December 31, 2023, provisional amounts were adjusted by $3.1 million, primarily relating to a $3.9 million decrease in estimated value of intangible assets and the corresponding $1.0 million change to the deferred tax position, with the offsets to goodwill. The purchase accounting was finalized in the year ended December 31, 2023.
Effective July 19, 2022, we acquired all of the outstanding equity ownership interests of GCommerce, Inc. ("GCommerce"), a leading EDI provider within the automotive aftermarket industry. Pursuant to the definitive agreement, the purchase price was $45.1 million, including post-closing adjustments. In the year ended December 31, 2023, provisional amounts were adjusted by $1.6 million, primarily relating to a $1.5 million decrease in the estimated value of deferred income tax assets, with the corresponding offset to goodwill. The purchase accounting was finalized in the year ended December 31, 2023.
XML 28 R11.htm IDEA: XBRL DOCUMENT v3.24.0.1
Revenue
12 Months Ended
Dec. 31, 2023
Revenue from Contract with Customer [Abstract]  
Revenue Revenue
We derive our revenues from the following revenue streams:
Year Ended December 31,
(in thousands)202320222021
Recurring revenues:
Fulfillment$436,702 $364,148 $306,851 
Analytics51,703 46,894 42,674 
Other13,608 8,005 5,481 
Recurring Revenues502,013 419,047 355,006 
One-time revenues34,897 31,828 30,270 
Total revenue$536,910 $450,875 $385,276 
Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.
Recurring Revenues
Recurring revenues consist of recurring subscriptions from customers that utilize our Fulfillment, Analytics, and Other supply chain management products. Revenue for these products is generally recognized on a ratable basis over the contract term beginning on the date that our service is made available to the customer. Our contracts with our recurring revenue customers are recurring in nature, generally ranging from monthly to annual, and generally allow the customer to cancel the contract for any reason with 30 to 90 days’ notice. Timing of billings varies by customer and by contract type and are either in advance or within 30 days of the service being performed.
Given that the recurring revenue contracts are for one year or less, we have applied the optional exemption to not disclose information about the remaining performance obligations for recurring revenue contracts.
One-time Revenues
One-time revenues consist of set-up fees and miscellaneous fees from customers.
Set- up revenues
Set-up fees are specific for each connection a customer has with a trading partner. These nonrefundable fees are necessary for our customers to utilize our services and do not provide any standalone value. Many of our customers have connections with numerous trading partners.
Set-up fees constitute a material renewal option right that provide customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. As such, set-up fees and related costs are deferred and recognized ratably, generally over two years, which is the estimated period for which a material right is present for our customers.
The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees:
Year Ended December 31,
(in thousands)20232022
Balance, beginning of year$14,999 $14,459 
Invoiced set-up fees19,146 15,457 
Recognized set-up fees(16,542)(14,917)
Balance, end of year$17,603 $14,999 
The entire balance of deferred set-up fees will be recognized within two years. Those that will be recognized within the next year are classified as current, whereas the remainder are classified as non-current.
Miscellaneous fees
Miscellaneous fees primarily consist of professional services and testing and certification.
The contract period for these one-time fees is for one year or less and recognized at the time service is provided. We have applied the optional exemption to not disclose information about the remaining performance obligations for miscellaneous one-time fee contracts since they have original durations of one year or less.
Deferred Revenue
In the year ended December 31, 2023, we recognized revenue of $57.4 million from amounts included in deferred revenue at December 31, 2022.
XML 29 R12.htm IDEA: XBRL DOCUMENT v3.24.0.1
Deferred Costs
12 Months Ended
Dec. 31, 2023
Deferred Costs [Abstract]  
Deferred Costs Deferred Costs
The deferred costs activity was as follows:
Year Ended December 31,
(in thousands)20232022
Balance, beginning of year$70,179 $59,720 
Incurred deferred costs89,012 72,509 
Amortized deferred costs(76,441)(62,050)
Balance, end of year$82,750 $70,179 
XML 30 R13.htm IDEA: XBRL DOCUMENT v3.24.0.1
Fair Value Measurements
12 Months Ended
Dec. 31, 2023
Fair Value Disclosures [Abstract]  
Fair Value Measurements Fair Value Measurements
Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:
December 31,
20232022
Fair Value LevelAmortized CostUnrealized Gains (Losses), netFair ValueAmortized CostUnrealized Gains (Losses), netFair Value
(in thousands)
Cash equivalents:
Money market fundsLevel 1$161,233 $— $161,233 $73,368 $— $73,368 
Investments:
Certificates of depositLevel 16,805 — 6,805 6,813 — 6,813 
Marketable securities:
Commercial paperLevel 248,860 694 49,554 44,224 375 44,599 
$216,898 $694 $217,592 $124,405 $375 $124,780 
XML 31 R14.htm IDEA: XBRL DOCUMENT v3.24.0.1
Allowance for Credit Losses
12 Months Ended
Dec. 31, 2023
Receivables [Abstract]  
Allowance for Credit Losses Allowance for Credit Losses
The allowance for credit losses activity, included in accounts receivable, net, was as follows:
Year Ended December 31,
(in thousands)202320222021
Balance, beginning of year$3,066 $4,249 $4,233 
Provision for credit losses5,707 3,359 4,717 
Write-offs, net of recoveries(5,453)(4,542)(4,790)
Initial allowance for business combination acquired receivables— — 89 
Balance, end of year$3,320 $3,066 $4,249 
XML 32 R15.htm IDEA: XBRL DOCUMENT v3.24.0.1
Property and Equipment, Net
12 Months Ended
Dec. 31, 2023
Property, Plant and Equipment [Abstract]  
Property and Equipment, Net Property and Equipment, Net
Property and equipment, net consisted of the following:
December 31,
(in thousands)20232022
Internally developed software$60,396 $49,994 
Computer equipment34,402 30,310 
Leasehold improvements15,387 16,531 
Office equipment and furniture10,966 10,981 
Property and equipment, cost121,151 107,816 
Less: accumulated depreciation and amortization(85,108)(72,358)
Total property and equipment, net$36,043 $35,458 
Depreciation and amortization expense of property and equipment was as follows:
Year Ended December 31,
(in thousands)202320222021
Depreciation and amortization expense$18,631 $16,421 $14,788 
XML 33 R16.htm IDEA: XBRL DOCUMENT v3.24.0.1
Goodwill and Intangible Assets, Net
12 Months Ended
Dec. 31, 2023
Goodwill and Intangible Assets Disclosure [Abstract]  
Goodwill and Intangible Assets, Net Goodwill and Intangible Assets, Net
Goodwill
The activity in goodwill was as follows:
Year Ended December 31,
(in thousands)2023
Balance, beginning of year$197,284 
Additions from business acquisitions45,393 
Foreign currency translation2,328 
Remeasurement from provisional purchase accounting amount4,171 
Balance, end of year$249,176 
Intangible Assets
Intangible assets, net consisted of the following:
December 31, 2023
($ in thousands)Gross
Carrying
Amount
Accumulated
Amortization
Foreign
Currency
Translation
NetWeighted Average Remaining Amortization Period
Subscriber relationships$105,228 $(32,097)$724 $73,855 6.6 years
Developed technology48,843 (15,669)315 33,489 5.0 years
$154,071 $(47,766)$1,039 $107,344 6.1 years
December 31, 2022
($ in thousands)Gross
Carrying
Amount
Accumulated
Amortization
Foreign
Currency
Translation
NetWeighted Average Remaining Amortization Period
Subscriber relationships$80,101 $(22,255)$(171)$57,675 6.8 years
Developed technology40,610 (9,934)30,677 5.4 years
$120,711 $(32,189)$(170)$88,352 6.4 years

Amortization expense of intangible assets was as follows:
Year Ended December 31,
(in thousands)202320222021
Amortization expense
$16,116 $11,768 $10,126 

The estimated future annual amortization expense related to intangible assets is as follows:
(in thousands)
2024$18,842 
202518,704 
202617,700 
202717,226 
202815,959 
Thereafter18,913 
Total future amortization$107,344 
XML 34 R17.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies
12 Months Ended
Dec. 31, 2023
Commitments and Contingencies Disclosure [Abstract]  
Commitments and Contingencies Commitments and Contingencies
Leases
We are engaged in a lease agreement for our current headquarters located in Minneapolis, Minnesota where we lease approximately 198,000 square feet under an agreement that expires in 2027. The lease also has two options to extend the term for five years each at a market rate determined in accordance with the lease. We lease other smaller facilities across the U.S. and international locations.
The components of lease expense were as follows:
Year Ended December 31,
(in thousands)202320222021
Operating lease cost$3,123 $3,087 $3,089 
Variable lease cost3,771 3,576 3,660 
$6,894 $6,663 $6,749 
Supplemental cash flow information related to leases was as follows:
December 31,
(in thousands)20232022
Cash paid for amounts included in the measurement of lease liabilities
Operating cash flows from operating leases$5,022 $4,639 
Right-of-use assets obtained in exchange for operating lease liabilities1,147 934 
Supplemental balance sheet information related to operating leases was as follows:
December 31, 2023December 31, 2022
Weighted-average remaining lease term3.1 years3.9 years
Weighted-average discount rate4.0 %4.0 %
At December 31, 2023, our future minimum payments under operating leases were as follows:
(in thousands)
2024$4,910 
20254,694 
20263,947 
20271,299 
202825 
Thereafter76 
Total future gross payments14,951 
Less: imputed interest(922)
Total operating lease liabilities$14,029 
Purchase Commitments
We have entered into separate noncancelable agreements with computing infrastructure, productivity software, customer relationship management, and performance and security data analytics vendors for services through 2026. At December 31, 2023, our remaining purchase commitments and estimated purchase timing were as follows:
(in thousands)
2024$14,536 
202514,186 
20266,342 
Total remaining purchase commitments$35,064 
Contingencies
We may be involved in various claims and legal actions in the normal course of business. We believe that the outcome of any such claim or legal action is not expected to have a material adverse effect on our financial position or results of operations.
XML 35 R18.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stockholders' Equity
12 Months Ended
Dec. 31, 2023
Equity [Abstract]  
Stockholders' Equity Stockholders’ Equity
Share Repurchase Program
Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through December 31, 2023 were as follows:
(in thousands)Effective DateExpiration DateShare Value Authorized for RepurchaseShare Value RepurchasedUnused & Expired Share Repurchase ValueShare Value Available for Future Repurchase
2019 ProgramNovember 2019November 2021$50,000 $29,611 $20,389 N/A
2021 ProgramNovember 2021August 202250,000 49,992 N/A
2022 ProgramAugust 2022July 202450,000 2,992 N/A$47,008 
The share repurchase activity by period was as follows:
Year Ended December 31,
(in thousands, except shares and per share amounts)202320222021
Number of shares repurchased— 361,745 176,103 
Shares repurchased cost$— $43,215 $20,430 
Average price per repurchased share$— $119.46 $116.01 
XML 36 R19.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation
12 Months Ended
Dec. 31, 2023
Share-Based Payment Arrangement [Abstract]  
Stock-Based Compensation Stock-Based Compensation
Our equity compensation plans provide for the grant of incentive and nonqualified stock options, as well as other stock-based awards including PSUs, RSAs, RSUs, and DSUs, to employees, non-employee directors and other consultants who provide services to us. We also provide an ESPP and 401(k) stock match to eligible participants.
We recognize stock-based compensation expense based on grant date award fair value. This cost is recognized over the period for which the employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. At December 31, 2023 there were 12.7 million shares available for grant under approved equity compensation plans.
Stock-based compensation expense was allocated in the consolidated statements of comprehensive income as follows:
Year Ended December 31,
(in thousands)202320222021
Cost of revenues$10,169 $8,684 $6,760 
Operating expenses
Sales and marketing9,774 7,590 6,248 
Research and development7,200 5,634 4,384 
General and administrative18,365 11,491 10,182 
$45,508 $33,399 $27,574 
Stock-based compensation expense by grant type or plan was as follows:
Year Ended December 31,
(in thousands)202320222021
Stock options$1,947 $1,903 $2,057 
PSUs11,886 7,509 6,417 
RSUs & DSUs
26,185 19,282 15,388 
RSAs
472 437 434 
ESPP2,488 2,144 1,391 
401(k) stock match2,530 2,124 1,887 
$45,508 $33,399 $27,574 
As of December 31, 2023, there was $52.0 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a primarily straight-line basis over a weighted-average period of 2.4 years.
Stock Options
Options generally vest over four years and, upon vesting, the holder is given the option to purchase shares of common stock at a specific strike price until expiration, which is generally seven years from the grant date.
Our stock option activity was as follows:
Options (#)Weighted Average
Exercise Price
($/share)
Outstanding at December 31, 2020944,88636.71 
Granted53,223105.53 
Exercised(311,378)30.10 
Forfeited(8,081)68.62 
Outstanding at December 31, 2021678,65044.76 
Granted56,430122.59 
Exercised(164,393)29.86 
Forfeited(7,990)92.48 
Outstanding at December 31, 2022562,69756.24 
Granted42,215152.68 
Exercised(254,353)38.75 
Forfeited(3,737)129.43 
Outstanding at December 31, 2023346,82280.02 
Of the total outstanding options at December 31, 2023, 0.3 million were exercisable. The outstanding and exercisable options had a weighted average exercise price of $67.07 per share and a weighted average remaining contractual life of 3.1 years.
The table below presents additional information related to our stock options:
Year Ended December 31,
(in thousands, except per share data)202320222021
Fair value of options vested$1,966 $1,996 $2,509 
Intrinsic value of options exercised31,227 16,705 27,713 
Intrinsic value of options outstanding39,474 40,692 66,235 
Weighted-average fair value per share of options granted56.47 41.34 31.31 
The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:
Year Ended December 31,
202320222021
Life (in years)4.24.34.4
Volatility39 %38 %35 %
Dividend yield— — — 
Risk-free interest rate4.00 %2.50 %0.59 %
Performance Share Units, Restricted Stock Units and Awards, and Deferred Stock Units
In 2023, 2022, and 2021 we granted PSU awards with certain target performance levels. These awards are earned based upon our Company’s total shareholder return as compared to an indexed total shareholder return over the course of a fiscal based three-year performance period, starting in the year of grant. Earned awards vest in the quarter following the conclusion of the performance period. Expense is recognized on a straight-line basis over the performance period, regardless of whether the market condition is satisfied as the likelihood of the market condition being met is included in the fair-value measurement of the award. In 2023, PSU awards granted in 2020 were earned and vested at the maximum performance level and less than 0.2 million shares of common stock were issued.
RSUs generally vest over four years and, upon vesting, the holder is entitled to receive shares of our common stock.
RSAs vest over one year and, upon vesting, the holder is entitled to receive shares of our common stock. In lieu of RSAs, a participant may elect to receive DSUs with one year vesting, but the participant directs delayed receipt of common shares of up to ten years after the end of service to us.
Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:
#Weighted Average Grant
Date Fair Value
($/share)
Outstanding at December 31, 2020738,42252.37 
Granted314,290101.85 
Vested and common stock issued(331,669)44.14 
Forfeited(18,883)66.35 
Outstanding at December 31, 2021702,16078.03 
Granted312,880126.44 
Vested and common stock issued(276,872)64.12 
Forfeited(26,010)99.37 
Outstanding at December 31, 2022712,158103.93 
Granted416,377163.55 
Vested and common stock issued(344,087)77.52 
Forfeited(11,034)122.97 
Outstanding at December 31, 2023773,414147.50 
The number of PSUs, RSUs, RSAs, and DSUs outstanding at December 31, 2023 included less than 0.1 million units that have vested, but the shares of common stock have not yet been issued, pursuant to the terms of the agreements.
Employee Stock Purchase Plan
Our ESPP activity was as follows:
Year Ended December 31,
(in thousands, except share data)202320222021
Amounts for shares purchased$8,114 $6,676 $4,737 
Shares purchased63,641 70,107 55,726 
A total of 1.7 million shares of common stock are remaining for issuance under the plan at December 31, 2023.
The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:
Year Ended December 31,
202320222021
Life (in years)0.50.50.5
Volatility36 %42 %32 %
Dividend yield
Risk-free interest rate4.92 %1.27 %0.07 %
XML 37 R20.htm IDEA: XBRL DOCUMENT v3.24.0.1
Income Taxes
12 Months Ended
Dec. 31, 2023
Income Tax Disclosure [Abstract]  
Income Taxes Income Taxes
Our provision for income taxes was comprised of the following components:
Year Ended December 31,
(in thousands)202320222021
Current
Federal$20,168 $13,881 $1,559 
State4,221 4,149 1,890 
Foreign2,103 1,990 1,610 
Deferred
Federal(5,425)(2,530)4,294 
State(390)(751)(88)
Foreign(938)(549)(321)
$19,739 $16,190 $8,944 
Our income tax expense differed from the amounts computed by applying the U.S. federal income tax rate to pretax income as a result of the following:
Year Ended December 31,
202320222021
U.S. statutory federal income tax rate21.0 %21.0 %21.0 %
Increase (decrease) resulting from:
U.S. state income taxes, net of federal tax effect5.1 4.6 4.5 
Tax impact of stock activity(5.6)(4.7)(12.8)
Nondeductible compensation4.7 3.5 5.0 
Research and development credit(1.5)(1.5)(1.1)
Foreign derived intangible income(1.3)(1.4)(1.3)
Other0.7 1.2 1.4 
Effective tax rate23.1 %22.7 %16.7 %
The significant components of our deferred income tax assets and liabilities were as follows:
December 31,
(in thousands)20232022
Deferred income tax assets
Net operating loss and credit carryforwards$10,212 $9,970 
Stock-based compensation expense6,304 5,084 
Accrued expenses6,067 4,469 
Operating lease liabilities3,470 4,384 
Research and development capitalized17,007 9,591 
Other deferred income tax assets2,705 2,408 
Gross deferred income tax assets45,765 35,906 
Less: valuation allowance(2,545)(1,873)
Total net deferred income tax assets$43,220 $34,033 
Deferred income tax liabilities
Deferred costs$(20,672)$(17,696)
Right-of-use assets(1,884)(2,338)
Depreciation and amortization(28,066)(20,282)
Other deferred income tax liabilities(1,065)(909)
Total deferred income tax liabilities(51,687)(41,225)
Net deferred income tax liabilities$(8,467)$(7,192)
As of December 31, 2023, we had net operating loss carryforwards of $28.9 million for U.S. federal tax purposes, $5.6 million for state tax purposes, and $9.8 million for foreign tax purposes. If not utilized, the loss carryforwards will expire between 2024 and 2036 for federal tax purposes, between 2024 and 2043 for state tax purposes, and will not expire for foreign tax purposes. Section 382 of the U.S. Internal Revenue Code generally imposes an annual limitation on the amount of net operating loss carryforwards that might be used to offset taxable income when a corporation has undergone significant changes in stock ownership. As of December 31, 2023, all $28.9 million of our federal net operating loss carryforwards are subject to Section 382 limitations, of which we believe $6.5 million will expire unused due to Section 382 limitations. Accordingly, our deferred income tax assets are reported net of the Section 382 limitations.
We are subject to income taxes for U.S. federal and various state and international jurisdictions. We are generally subject to U.S. federal and state tax examinations for most prior tax years due to our net operating loss and R&D credit carryforwards and the utilization of the carryforwards in years still open under statute.
XML 38 R21.htm IDEA: XBRL DOCUMENT v3.24.0.1
Other Income and Expense
12 Months Ended
Dec. 31, 2023
Other Income and Expenses [Abstract]  
Other Income and Expense Other Income and Expense
Other income (expense), net included the following:
Year Ended December 31,
(in thousands)202320222021
Investment income$7,660 $1,670 $278 
Realized gain (loss) from foreign currency on cash and investments held1,726 (1,026)(1,456)
Other expense, net(1,071)(502)(366)
Total other income (expense), net$8,315 $142 $(1,544)
XML 39 R22.htm IDEA: XBRL DOCUMENT v3.24.0.1
Net Income Per Share
12 Months Ended
Dec. 31, 2023
Earnings Per Share [Abstract]  
Net Income Per Share Net Income Per Share
The components and computation of basic and diluted net income per share were as follows:
Year Ended December 31,
(in thousands, except per share amounts)202320222021
Numerator
Net income$65,824 $55,134 $44,597 
Denominator
Weighted average common shares outstanding, basic36,646 36,117 35,928 
Options to purchase common stock and ESPP265 382 529 
PSUs, RSUs, RSAs, and DSUs564 454 505 
Weighted average common shares outstanding, diluted37,475 36,953 36,962 
Net income per share
Basic$1.80 $1.53 $1.24 
Diluted$1.76 $1.49 $1.21 
The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:
Year Ended December 31,
(in thousands)202320222021
Anti-dilutive shares36 75 31 
XML 40 R23.htm IDEA: XBRL DOCUMENT v3.24.0.1
Retirement Savings Plan
12 Months Ended
Dec. 31, 2023
Retirement Benefits [Abstract]  
Retirement Contributions Retirement Contributions
We sponsor a 401(k) retirement savings plan for our U.S. employees. Eligible employees can contribute up to 80% of their compensation, subject to the limits established by law, and we match 50% of the employee’s contribution up to the first 6% of pre-tax annual compensation. A portion of our match is in Company stock, which is purchased from the open market by our plan provider and immediately deposited into the employee’s 401(k) account. Additionally, we make statutory contributions to retirement plans as required by local foreign government regulations.
Our total contributions were as follows:
Year Ended December 31,
(in thousands)202320222021
Retirement contributions$6,627 $5,386 $4,790 
XML 41 R24.htm IDEA: XBRL DOCUMENT v3.24.0.1
Geographic Information
12 Months Ended
Dec. 31, 2023
Revenue from Contract with Customer [Abstract]  
Geographic Information Geographic Information
Statements of Comprehensive Income
The percentage of domestic revenue, which we define as consolidated revenue that was attributable to customers based within the U.S., and domestic income before income taxes, which we define as the percentage of consolidated income before income taxes that was attributable to our subsidiaries based in the U.S., were as follows:
Year Ended December 31,
202320222021
Domestic revenue84 %84 %84 %
Domestic income before income taxes94 %91 %89 %
No single jurisdiction outside of the U.S. had revenues in excess of 10%.
Property and Equipment
Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows:
December 31,
20232022
International property and equipment15 %13 %
XML 42 R25.htm IDEA: XBRL DOCUMENT v3.24.0.1
Related Party Transactions
12 Months Ended
Dec. 31, 2023
Related Party Transactions [Abstract]  
Related Party Transactions Related Party Transactions
The SPS Commerce Foundation (the “Foundation”) is a Minnesota non-profit organization exempt from federal taxation under Section 501(c)(3) of the Internal Revenue Code. The Foundation was formed in 2015 to engage in, advance, support, promote and administer charitable activities. The directors of the Foundation are also our executive officers. These directors receive no compensation from the Foundation or us for the management services performed for the Foundation. The Foundation is not a subsidiary of ours and the financial results of the Foundation are not consolidated with our financial statements. We have no current legal obligations for future commitments to the Foundation. Our contributions to the Foundation were as follows:
Year Ended December 31,
(in thousands)202320222021
Foundation contributions$2,300 $2,750 $2,400 
XML 43 R26.htm IDEA: XBRL DOCUMENT v3.24.0.1
Pay vs Performance Disclosure - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Pay vs Performance Disclosure      
Net income $ 65,824 $ 55,134 $ 44,597
XML 44 R27.htm IDEA: XBRL DOCUMENT v3.24.0.1
Insider Trading Arrangements
3 Months Ended
Dec. 31, 2023
Trading Arrangements, by Individual  
Rule 10b5-1 Arrangement Adopted false
Non-Rule 10b5-1 Arrangement Adopted false
Rule 10b5-1 Arrangement Terminated false
Non-Rule 10b5-1 Arrangement Terminated false
XML 45 R28.htm IDEA: XBRL DOCUMENT v3.24.0.1
General (Policies)
12 Months Ended
Dec. 31, 2023
Organization, Consolidation and Presentation of Financial Statements [Abstract]  
Business Description
Business Description
SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.
Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.
Basis of Presentation
Basis of Presentation
The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements.
Foreign Currency Translation
Foreign Currency Translation
The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies are included in other income (expense), net in our consolidated statements of comprehensive income.
Use of Estimates
Use of Estimates
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.
Business Combinations
Business Combinations
We allocate the fair value of purchase consideration to the tangible assets acquired, liabilities assumed, and intangible assets acquired based on their estimated fair values as of the acquisition date. The excess of the fair value of purchase consideration over the fair values of these identifiable assets and liabilities is recorded as goodwill.
Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We record the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred, if present. The unsettled earn-out liability, if any, is subsequently remeasured at each reporting date at fair value through earnings.
While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed. Any such adjustments would be recorded as an offset to goodwill or a working capital purchase price adjustment as applicable. Upon the conclusion of the measurement period or final determination of the fair values, whichever comes first, any subsequent adjustments would be recorded in our consolidated statements of comprehensive income.
Segment Information
Segment Information
Our Chief Executive Officer acts as the Company’s chief operating decision maker and reviews financial information presented on a consolidated basis for purposes of allocating resources and evaluating financial performance. There are no segment managers who are held accountable by the chief operating decision maker, or anyone else, for operations, operating results and planning for levels or components below the consolidated unit level. Accordingly, we determined we have one operating and reportable segment, which is supply chain management products.
Concentration of Credit Risk
Concentration of Credit Risk
Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits, accounts receivable, and investments. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. Concentrations of credit risk with respect to accounts receivable are subject to the financial condition of our customers, which are routinely assessed for potential credit losses. We believe that the receivable credit risk exposure is limited. Our investment policy limits the amount of credit exposure with any one financial institution or commercial issuer and sets requirements regarding credit rating and investment maturities to safeguard liquidity and minimize risk.
Cash and Cash Equivalents
Cash and Cash Equivalents
Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days.
Investments
Investments
We invest in money market funds, certificates of deposit, and/or marketable securities such as commercial paper, highly liquid debt instruments of the U.S. government, and U.S. corporate debt securities. Investments with remaining maturities of less than one year from the balance sheet date are classified as short-term investments whereas those with remaining maturities of more than one year from the balance sheet date are classified as investments, non-current.
Securities classified as available for sale are carried at fair value and the unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive gain (loss) in the consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the consolidated statements of comprehensive income. Certain securities accrue interest that is included in other income (expense), net. If a determination has been made that the fair value of a marketable security is below its amortized cost basis, the portion of the unrealized loss that corresponds to a credit-related factor is realized through a credit allowance on the marketable security and the equivalent expense is realized in other income (expense), net in the consolidated statements of comprehensive income.
Fair Value Measurements
Fair Value Measurements
The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature.
Recurring Fair Value Measurements
We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that are used to measure fair value are:
Level 1 – quoted prices in active markets for identical assets or liabilities.
Level 2 – observable inputs other than Level 1 prices, such as (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities.
Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities.
Nonrecurring Fair Value Measurements
We measure certain assets and liabilities at fair value on a nonrecurring basis, including long-lived assets, goodwill, and indefinite-lived intangible assets.
Accounts Receivable
Accounts Receivable
Accounts receivable are initially recorded upon the sale and invoicing of products to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for credit losses, which represent estimated losses resulting from customers not making required payments on accounts receivables. When determining the allowance, we pool our outstanding accounts receivable invoices based on the contractual due date of payment. We take several factors into consideration for estimated credit losses by pool, primarily our historical credit losses, with additional adjustments made for current and future macro-economic conditions and retail bankruptcy trends. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowance are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income.
Property and Equipment
Property and Equipment
Property and equipment, including assets acquired under lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization expense is calculated using the straight-line method over the estimated useful lives, commencing on the earlier date in which the asset is placed in service or ready for its intended use.
The estimated useful lives of property and equipment were as follows:
Estimated Useful Life
Internally developed software3 years
Computer equipment
3 years
Office equipment and furniture
5-7 years
Leasehold improvementsShorter of the useful life of the asset or the remaining term of the lease
Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred. The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals with the resulting gain or loss included in our consolidated statements of comprehensive income.
We capitalize and amortize eligible costs to acquire or generate internally developed software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Additionally, maintenance of internally developed software are expensed as incurred. The assets and related accumulated amortization are adjusted for abandoned internally developed software with the resulting loss included in our consolidated statements of comprehensive income.
Leases
Leases
We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and non-current operating lease liabilities in our consolidated balance sheets.
Right-of-use (“ROU”) assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We use the implicit interest rate when readily determinable. We estimate the discount rate for a similar collateralized asset by estimating costs of borrowing. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change.
Research and Development
Research and Development
Research and development costs primarily include development, maintenance, and data conversion activities related to our cloud-based supply chain management products and are expensed as incurred. Research and development costs are net of amounts capitalized as developed software.
Goodwill
Goodwill
Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. Goodwill is attributed to a trained workforce and other buyer-specific value resulting from expected synergies, including long-term cost savings, which are not included in the fair values of identifiable assets.
We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount exceeds the fair value of the reporting unit, we would recognize an impairment loss in the consolidated statements of comprehensive income, to the extent that the carrying amount exceeds fair value.
Intangible Assets
Intangible Assets
Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships and developed technology. We recognize the fair value of the identifiable intangible assets acquired separately from goodwill. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable.
The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives.
The estimated useful lives for intangible were as follows:
Estimated Useful Life
Subscriber relationships
7-10 years
Developed technology
5-10 years
Impairment of Long-Lived Assets
Impairment of Long-Lived Assets
We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured and recorded as an expense in the consolidated statements of comprehensive income as the amount by which the carrying amount of a long-lived asset exceeds its fair value.
Revenue Recognition
Revenue Recognition
Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.
We determine revenue recognition through the following steps:
Identification of the contract, or contracts, with a customer
Identification of the performance obligations in the contract
Determination of the transaction price
Allocation of the transaction price to the performance obligations in the contract
Recognition of revenue when, or as, we satisfy a performance obligation
See Note C for further descriptions of our revenue recognition policy.
Deferred Costs
Deferred Costs
Deferred costs are those that are incurred to fulfill or obtain customer contracts and that are considered incremental and recoverable costs. These consist primarily of customer implementation costs and certain commissions paid to sales personnel and referral partners, respectively. These costs are deferred and amortized over the expected period of benefit which we have determined primarily to be two years.
Customer implementation costs are based on actual costs incurred. Related amortization expense is included in cost of revenues in the consolidated statements of comprehensive income.
Sales commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. Related amortization expense is included in sales and marketing expenses in the consolidated statements of comprehensive income.
Stock-Based Compensation
Stock-Based Compensation
Stock-based compensation includes grants of incentive and nonqualified stock options, performance share units (“PSUs”), restricted stock awards (“RSAs”), restricted stock units (“RSUs”), deferred stock units (“DSUs”), employee stock purchase plan (“ESPP”) activity, and 401(k) stock match and is used to compensate employees, executive officers, and non-employee directors.
We recognize the cost of all stock-based payments based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. For all awards, we recognize forfeitures as they occur.
RSAs result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested, or released according to the terms of the agreement.
Our ESPP allows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of our common stock at the beginning or end of each stock purchase period. The plan is a Type B plan, so the number of shares a participants can acquire is variable. Participants purchase more shares as the stock price decreases, up to the total amount originally elected to withhold at the beginning of the offering period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year.
The fair value of stock options and ESPP activity is estimated using the Black-Scholes option valuation model. The fair value for RSAs, RSUs, and DSUs is the closing market value of the underlying stock on the date of grant less the purchase price (if any). The fair value of PSUs is estimated using a Monte Carlo simulation.
Judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is derived from historical data on option holder exercises and post-vesting employment termination behavior.
Additional valuation inputs include our expected non-issuance of future common stock dividends and the risk-free interest rate that is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equaling the expected life at the grant date. For PSUs, the Monte Carlo simulation utilizes multiple input variables that determine the probability of satisfying the performance conditions stipulated in the award.
Income Taxes
Income Taxes
We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the consolidated financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgment, it is more likely than not that some or all of the deferred tax asset will not be realized. Deferred tax positions are net by jurisdiction on the consolidated balance sheet.
We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results.
We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority.
It is our practice to recognize interest and penalties accrued on any unrecognized tax benefits as a component of income tax expense.
Net Income Per Share
Net Income Per Share
Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share.
Accounting Pronouncements Recently Adopted and Accounting Pronouncements Not Yet Adopted
Accounting Pronouncements Recently Adopted
StandardDate of IssuanceDescription
Date of Adoption
Effect on the Financial Statements
ASU 2021-08, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers
October 2021This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.
January 2023The adoption of this standard has not had a material impact on the purchase accounting for business combinations.
Accounting Pronouncements Not Yet Adopted
StandardDate of IssuanceDescriptionDate of Required AdoptionEffect on the Financial Statements
ASU 2023-09, Income Taxes (Topic 740) - Improvements to Income Tax Disclosures
December 2023This amendment requires that an entity disclose specific categories in the effective tax rate reconciliation table as well as provide disclosure of disaggregated information related to income tax expense, income before income taxes, and income taxes paid. January 2024We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.
ASU 2023-07, Segment Reporting (Topic 280) - Improvements to Reportable Segment Disclosures
November 2023This amendment requires that an entity disclose significant segment expenses impacting profit and loss that are regularly provided to the chief operating decision maker.January 2024We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.
XML 46 R29.htm IDEA: XBRL DOCUMENT v3.24.0.1
General (Tables)
12 Months Ended
Dec. 31, 2023
Organization, Consolidation and Presentation of Financial Statements [Abstract]  
Schedule of Estimated Useful Lives of Property and Equipment
The estimated useful lives of property and equipment were as follows:
Estimated Useful Life
Internally developed software3 years
Computer equipment
3 years
Office equipment and furniture
5-7 years
Leasehold improvementsShorter of the useful life of the asset or the remaining term of the lease
Property and equipment, net consisted of the following:
December 31,
(in thousands)20232022
Internally developed software$60,396 $49,994 
Computer equipment34,402 30,310 
Leasehold improvements15,387 16,531 
Office equipment and furniture10,966 10,981 
Property and equipment, cost121,151 107,816 
Less: accumulated depreciation and amortization(85,108)(72,358)
Total property and equipment, net$36,043 $35,458 
Summary of Estimated Useful Lives of Intangible Assets
The estimated useful lives for intangible were as follows:
Estimated Useful Life
Subscriber relationships
7-10 years
Developed technology
5-10 years
XML 47 R30.htm IDEA: XBRL DOCUMENT v3.24.0.1
Business Acquisitions (Tables)
12 Months Ended
Dec. 31, 2023
Business Combination and Asset Acquisition [Abstract]  
Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date
The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date:
(in thousands)Acquisition Date Estimated Fair Value as of
September 30, 2023
AdjustmentAcquisition Date Estimated Fair Value as of
December 31, 2023
Cash paid$73,558 $— $73,558 
Estimated fair value of assets and liabilities acquired:
Cash$4,859 $— $4,859 
Accounts receivable1,347 (80)1,267 
Other assets2,981 659 3,640 
Intangible assets
Subscriber relationships18,183 11,137 29,320 
Developed technology12,122 (4,279)7,843 
Current liabilities(3,606)(232)(3,838)
Deferred revenue(6,421)— (6,421)
Deferred income tax liabilities, net(6,112)(1,757)(7,869)
Total fair value of assets and liabilities acquired$23,353 $5,448 $28,801 
Goodwill$50,205 $(5,448)$44,757 
Finite-Lived and Indefinite-Lived Intangible Assets Acquired as Part of Business Combination
The following table summarizes the estimated useful lives for each acquired intangible asset, each of which are subject to finalization:
Estimated Useful Life
Subscriber relationships8.0 years
Developed technology6.0 years
XML 48 R31.htm IDEA: XBRL DOCUMENT v3.24.0.1
Revenue (Tables)
12 Months Ended
Dec. 31, 2023
Revenue from Contract with Customer [Abstract]  
Summary of Revenues by Revenue Stream
We derive our revenues from the following revenue streams:
Year Ended December 31,
(in thousands)202320222021
Recurring revenues:
Fulfillment$436,702 $364,148 $306,851 
Analytics51,703 46,894 42,674 
Other13,608 8,005 5,481 
Recurring Revenues502,013 419,047 355,006 
One-time revenues34,897 31,828 30,270 
Total revenue$536,910 $450,875 $385,276 
Summary of Deferred Revenue Liability Relating to Set-Up Fees
The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees:
Year Ended December 31,
(in thousands)20232022
Balance, beginning of year$14,999 $14,459 
Invoiced set-up fees19,146 15,457 
Recognized set-up fees(16,542)(14,917)
Balance, end of year$17,603 $14,999 
XML 49 R32.htm IDEA: XBRL DOCUMENT v3.24.0.1
Deferred Costs (Tables)
12 Months Ended
Dec. 31, 2023
Deferred Costs [Abstract]  
Summary of Deferred Costs Activity
The deferred costs activity was as follows:
Year Ended December 31,
(in thousands)20232022
Balance, beginning of year$70,179 $59,720 
Incurred deferred costs89,012 72,509 
Amortized deferred costs(76,441)(62,050)
Balance, end of year$82,750 $70,179 
XML 50 R33.htm IDEA: XBRL DOCUMENT v3.24.0.1
Fair Value Measurements (Tables)
12 Months Ended
Dec. 31, 2023
Fair Value Disclosures [Abstract]  
Summary of Cash Equivalents and Investments Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:
December 31,
20232022
Fair Value LevelAmortized CostUnrealized Gains (Losses), netFair ValueAmortized CostUnrealized Gains (Losses), netFair Value
(in thousands)
Cash equivalents:
Money market fundsLevel 1$161,233 $— $161,233 $73,368 $— $73,368 
Investments:
Certificates of depositLevel 16,805 — 6,805 6,813 — 6,813 
Marketable securities:
Commercial paperLevel 248,860 694 49,554 44,224 375 44,599 
$216,898 $694 $217,592 $124,405 $375 $124,780 
XML 51 R34.htm IDEA: XBRL DOCUMENT v3.24.0.1
Allowance for Credit Losses (Tables)
12 Months Ended
Dec. 31, 2023
Receivables [Abstract]  
Schedule of Allowance for Credit Losses Activity Included in Accounts Receivable Net
The allowance for credit losses activity, included in accounts receivable, net, was as follows:
Year Ended December 31,
(in thousands)202320222021
Balance, beginning of year$3,066 $4,249 $4,233 
Provision for credit losses5,707 3,359 4,717 
Write-offs, net of recoveries(5,453)(4,542)(4,790)
Initial allowance for business combination acquired receivables— — 89 
Balance, end of year$3,320 $3,066 $4,249 
XML 52 R35.htm IDEA: XBRL DOCUMENT v3.24.0.1
Property and Equipment, Net (Tables)
12 Months Ended
Dec. 31, 2023
Property, Plant and Equipment [Abstract]  
Schedule of Property and Equipment, Net
The estimated useful lives of property and equipment were as follows:
Estimated Useful Life
Internally developed software3 years
Computer equipment
3 years
Office equipment and furniture
5-7 years
Leasehold improvementsShorter of the useful life of the asset or the remaining term of the lease
Property and equipment, net consisted of the following:
December 31,
(in thousands)20232022
Internally developed software$60,396 $49,994 
Computer equipment34,402 30,310 
Leasehold improvements15,387 16,531 
Office equipment and furniture10,966 10,981 
Property and equipment, cost121,151 107,816 
Less: accumulated depreciation and amortization(85,108)(72,358)
Total property and equipment, net$36,043 $35,458 
Schedule of Depreciation and Amortization Expense of Property and Equipment
Depreciation and amortization expense of property and equipment was as follows:
Year Ended December 31,
(in thousands)202320222021
Depreciation and amortization expense$18,631 $16,421 $14,788 
XML 53 R36.htm IDEA: XBRL DOCUMENT v3.24.0.1
Goodwill and Intangible Assets, Net (Tables)
12 Months Ended
Dec. 31, 2023
Goodwill and Intangible Assets Disclosure [Abstract]  
Schedule of Activity in Goodwill
The activity in goodwill was as follows:
Year Ended December 31,
(in thousands)2023
Balance, beginning of year$197,284 
Additions from business acquisitions45,393 
Foreign currency translation2,328 
Remeasurement from provisional purchase accounting amount4,171 
Balance, end of year$249,176 
Intangible Assets
Intangible assets, net consisted of the following:
December 31, 2023
($ in thousands)Gross
Carrying
Amount
Accumulated
Amortization
Foreign
Currency
Translation
NetWeighted Average Remaining Amortization Period
Subscriber relationships$105,228 $(32,097)$724 $73,855 6.6 years
Developed technology48,843 (15,669)315 33,489 5.0 years
$154,071 $(47,766)$1,039 $107,344 6.1 years
December 31, 2022
($ in thousands)Gross
Carrying
Amount
Accumulated
Amortization
Foreign
Currency
Translation
NetWeighted Average Remaining Amortization Period
Subscriber relationships$80,101 $(22,255)$(171)$57,675 6.8 years
Developed technology40,610 (9,934)30,677 5.4 years
$120,711 $(32,189)$(170)$88,352 6.4 years
Schedule of Amortization Expense of Intangible Assets
Amortization expense of intangible assets was as follows:
Year Ended December 31,
(in thousands)202320222021
Amortization expense
$16,116 $11,768 $10,126 
Estimated Annual Amortization Expense Related to Intangible Assets
The estimated future annual amortization expense related to intangible assets is as follows:
(in thousands)
2024$18,842 
202518,704 
202617,700 
202717,226 
202815,959 
Thereafter18,913 
Total future amortization$107,344 
XML 54 R37.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies (Tables)
12 Months Ended
Dec. 31, 2023
Commitments and Contingencies Disclosure [Abstract]  
Components of Lease Expense
The components of lease expense were as follows:
Year Ended December 31,
(in thousands)202320222021
Operating lease cost$3,123 $3,087 $3,089 
Variable lease cost3,771 3,576 3,660 
$6,894 $6,663 $6,749 
Schedule of Supplemental Cash Flow Information Related to Leases
Supplemental cash flow information related to leases was as follows:
December 31,
(in thousands)20232022
Cash paid for amounts included in the measurement of lease liabilities
Operating cash flows from operating leases$5,022 $4,639 
Right-of-use assets obtained in exchange for operating lease liabilities1,147 934 
Schedule of Supplemental Balance Sheet Information Related to Leases
Supplemental balance sheet information related to operating leases was as follows:
December 31, 2023December 31, 2022
Weighted-average remaining lease term3.1 years3.9 years
Weighted-average discount rate4.0 %4.0 %
Schedule of Future Minimum Payments Under Operating Leases
At December 31, 2023, our future minimum payments under operating leases were as follows:
(in thousands)
2024$4,910 
20254,694 
20263,947 
20271,299 
202825 
Thereafter76 
Total future gross payments14,951 
Less: imputed interest(922)
Total operating lease liabilities$14,029 
Summary of Remaining Purchase Commitments and Estimated Purchase Timing At December 31, 2023, our remaining purchase commitments and estimated purchase timing were as follows:
(in thousands)
2024$14,536 
202514,186 
20266,342 
Total remaining purchase commitments$35,064 
XML 55 R38.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stockholders' Equity (Tables)
12 Months Ended
Dec. 31, 2023
Equity [Abstract]  
Class of Treasury Stock
Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through December 31, 2023 were as follows:
(in thousands)Effective DateExpiration DateShare Value Authorized for RepurchaseShare Value RepurchasedUnused & Expired Share Repurchase ValueShare Value Available for Future Repurchase
2019 ProgramNovember 2019November 2021$50,000 $29,611 $20,389 N/A
2021 ProgramNovember 2021August 202250,000 49,992 N/A
2022 ProgramAugust 2022July 202450,000 2,992 N/A$47,008 
The share repurchase activity by period was as follows:
Year Ended December 31,
(in thousands, except shares and per share amounts)202320222021
Number of shares repurchased— 361,745 176,103 
Shares repurchased cost$— $43,215 $20,430 
Average price per repurchased share$— $119.46 $116.01 
XML 56 R39.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation (Tables)
12 Months Ended
Dec. 31, 2023
Share-Based Payment Arrangement [Abstract]  
Stock-Based Compensation Expense
Stock-based compensation expense was allocated in the consolidated statements of comprehensive income as follows:
Year Ended December 31,
(in thousands)202320222021
Cost of revenues$10,169 $8,684 $6,760 
Operating expenses
Sales and marketing9,774 7,590 6,248 
Research and development7,200 5,634 4,384 
General and administrative18,365 11,491 10,182 
$45,508 $33,399 $27,574 
Stock-based compensation expense by grant type or plan was as follows:
Year Ended December 31,
(in thousands)202320222021
Stock options$1,947 $1,903 $2,057 
PSUs11,886 7,509 6,417 
RSUs & DSUs
26,185 19,282 15,388 
RSAs
472 437 434 
ESPP2,488 2,144 1,391 
401(k) stock match2,530 2,124 1,887 
$45,508 $33,399 $27,574 
Stock Option Activity
Our stock option activity was as follows:
Options (#)Weighted Average
Exercise Price
($/share)
Outstanding at December 31, 2020944,88636.71 
Granted53,223105.53 
Exercised(311,378)30.10 
Forfeited(8,081)68.62 
Outstanding at December 31, 2021678,65044.76 
Granted56,430122.59 
Exercised(164,393)29.86 
Forfeited(7,990)92.48 
Outstanding at December 31, 2022562,69756.24 
Granted42,215152.68 
Exercised(254,353)38.75 
Forfeited(3,737)129.43 
Outstanding at December 31, 2023346,82280.02 
Summary of Additional Information Related to Stock Options
The table below presents additional information related to our stock options:
Year Ended December 31,
(in thousands, except per share data)202320222021
Fair value of options vested$1,966 $1,996 $2,509 
Intrinsic value of options exercised31,227 16,705 27,713 
Intrinsic value of options outstanding39,474 40,692 66,235 
Weighted-average fair value per share of options granted56.47 41.34 31.31 
Weighted Average Fair Value Per Share of Options Granted, Assumptions
The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:
Year Ended December 31,
202320222021
Life (in years)4.24.34.4
Volatility39 %38 %35 %
Dividend yield— — — 
Risk-free interest rate4.00 %2.50 %0.59 %
PSU, RSU, RSA, and DSU
Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:
#Weighted Average Grant
Date Fair Value
($/share)
Outstanding at December 31, 2020738,42252.37 
Granted314,290101.85 
Vested and common stock issued(331,669)44.14 
Forfeited(18,883)66.35 
Outstanding at December 31, 2021702,16078.03 
Granted312,880126.44 
Vested and common stock issued(276,872)64.12 
Forfeited(26,010)99.37 
Outstanding at December 31, 2022712,158103.93 
Granted416,377163.55 
Vested and common stock issued(344,087)77.52 
Forfeited(11,034)122.97 
Outstanding at December 31, 2023773,414147.50 
Summary of ESPP Activity
Our ESPP activity was as follows:
Year Ended December 31,
(in thousands, except share data)202320222021
Amounts for shares purchased$8,114 $6,676 $4,737 
Shares purchased63,641 70,107 55,726 
Fair Value Estimation of Common Stock, Assumptions
The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:
Year Ended December 31,
202320222021
Life (in years)0.50.50.5
Volatility36 %42 %32 %
Dividend yield
Risk-free interest rate4.92 %1.27 %0.07 %
XML 57 R40.htm IDEA: XBRL DOCUMENT v3.24.0.1
Income Taxes (Tables)
12 Months Ended
Dec. 31, 2023
Income Tax Disclosure [Abstract]  
Schedule of Provision for Income Taxes
Our provision for income taxes was comprised of the following components:
Year Ended December 31,
(in thousands)202320222021
Current
Federal$20,168 $13,881 $1,559 
State4,221 4,149 1,890 
Foreign2,103 1,990 1,610 
Deferred
Federal(5,425)(2,530)4,294 
State(390)(751)(88)
Foreign(938)(549)(321)
$19,739 $16,190 $8,944 
Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income
Our income tax expense differed from the amounts computed by applying the U.S. federal income tax rate to pretax income as a result of the following:
Year Ended December 31,
202320222021
U.S. statutory federal income tax rate21.0 %21.0 %21.0 %
Increase (decrease) resulting from:
U.S. state income taxes, net of federal tax effect5.1 4.6 4.5 
Tax impact of stock activity(5.6)(4.7)(12.8)
Nondeductible compensation4.7 3.5 5.0 
Research and development credit(1.5)(1.5)(1.1)
Foreign derived intangible income(1.3)(1.4)(1.3)
Other0.7 1.2 1.4 
Effective tax rate23.1 %22.7 %16.7 %
Significant Components of Deferred Tax Assets (Liabilities)
The significant components of our deferred income tax assets and liabilities were as follows:
December 31,
(in thousands)20232022
Deferred income tax assets
Net operating loss and credit carryforwards$10,212 $9,970 
Stock-based compensation expense6,304 5,084 
Accrued expenses6,067 4,469 
Operating lease liabilities3,470 4,384 
Research and development capitalized17,007 9,591 
Other deferred income tax assets2,705 2,408 
Gross deferred income tax assets45,765 35,906 
Less: valuation allowance(2,545)(1,873)
Total net deferred income tax assets$43,220 $34,033 
Deferred income tax liabilities
Deferred costs$(20,672)$(17,696)
Right-of-use assets(1,884)(2,338)
Depreciation and amortization(28,066)(20,282)
Other deferred income tax liabilities(1,065)(909)
Total deferred income tax liabilities(51,687)(41,225)
Net deferred income tax liabilities$(8,467)$(7,192)
XML 58 R41.htm IDEA: XBRL DOCUMENT v3.24.0.1
Other Income and Expense (Tables)
12 Months Ended
Dec. 31, 2023
Other Income and Expenses [Abstract]  
Summary of Other Income (Expense), Net
Other income (expense), net included the following:
Year Ended December 31,
(in thousands)202320222021
Investment income$7,660 $1,670 $278 
Realized gain (loss) from foreign currency on cash and investments held1,726 (1,026)(1,456)
Other expense, net(1,071)(502)(366)
Total other income (expense), net$8,315 $142 $(1,544)
XML 59 R42.htm IDEA: XBRL DOCUMENT v3.24.0.1
Net Income Per Share (Tables)
12 Months Ended
Dec. 31, 2023
Earnings Per Share [Abstract]  
Components of Computation of Basic and Diluted Net Income Per Share
The components and computation of basic and diluted net income per share were as follows:
Year Ended December 31,
(in thousands, except per share amounts)202320222021
Numerator
Net income$65,824 $55,134 $44,597 
Denominator
Weighted average common shares outstanding, basic36,646 36,117 35,928 
Options to purchase common stock and ESPP265 382 529 
PSUs, RSUs, RSAs, and DSUs564 454 505 
Weighted average common shares outstanding, diluted37,475 36,953 36,962 
Net income per share
Basic$1.80 $1.53 $1.24 
Diluted$1.76 $1.49 $1.21 
Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share
The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:
Year Ended December 31,
(in thousands)202320222021
Anti-dilutive shares36 75 31 
XML 60 R43.htm IDEA: XBRL DOCUMENT v3.24.0.1
Retirement Contributions (Tables)
12 Months Ended
Dec. 31, 2023
Retirement Benefits [Abstract]  
Schedule of Total Contribution to the Plan
Our total contributions were as follows:
Year Ended December 31,
(in thousands)202320222021
Retirement contributions$6,627 $5,386 $4,790 
XML 61 R44.htm IDEA: XBRL DOCUMENT v3.24.0.1
Geographic Information (Tables)
12 Months Ended
Dec. 31, 2023
Revenue from Contract with Customer [Abstract]  
Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes
The percentage of domestic revenue, which we define as consolidated revenue that was attributable to customers based within the U.S., and domestic income before income taxes, which we define as the percentage of consolidated income before income taxes that was attributable to our subsidiaries based in the U.S., were as follows:
Year Ended December 31,
202320222021
Domestic revenue84 %84 %84 %
Domestic income before income taxes94 %91 %89 %
No single jurisdiction outside of the U.S. had revenues in excess of 10%.
Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States
Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows:
December 31,
20232022
International property and equipment15 %13 %
XML 62 R45.htm IDEA: XBRL DOCUMENT v3.24.0.1
Related Party Transactions (Tables)
12 Months Ended
Dec. 31, 2023
Related Party Transactions [Abstract]  
Summary of Contributions to Foundation Our contributions to the Foundation were as follows:
Year Ended December 31,
(in thousands)202320222021
Foundation contributions$2,300 $2,750 $2,400 
XML 63 R46.htm IDEA: XBRL DOCUMENT v3.24.0.1
General - Narrative (Details)
12 Months Ended
Dec. 31, 2023
segment
period
Organization, Consolidation and Presentation of Financial Statements [Abstract]  
Number of reportable segment 1
Number of operating segment 1
Deferred commission expected amortization period 2 years
Purchase price as a percentage of fair market value 85.00%
Number of offering periods | period 2
Stock plan offering period 6 months
XML 64 R47.htm IDEA: XBRL DOCUMENT v3.24.0.1
General - Summary of Estimated Useful Lives of Property and Equipment (Details)
Dec. 31, 2023
Internally developed software  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of property and equipment 3 years
Computer equipment  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of property and equipment 3 years
Office equipment and furniture | Minimum  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of property and equipment 5 years
Office equipment and furniture | Maximum  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of property and equipment 7 years
XML 65 R48.htm IDEA: XBRL DOCUMENT v3.24.0.1
General - Summary of Estimated Useful Lives of Intangible Assets (Details)
Dec. 31, 2023
Subscriber relationships | Minimum  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of intangible assets 7 years
Subscriber relationships | Maximum  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of intangible assets 10 years
Developed technology | Minimum  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of intangible assets 5 years
Developed technology | Maximum  
Schedule of Accounting Policies [Line Items]  
Estimated useful lives of intangible assets 10 years
XML 66 R49.htm IDEA: XBRL DOCUMENT v3.24.0.1
Business Acquisitions - Narrative (Details)
$ in Thousands, € in Millions
12 Months Ended
Dec. 31, 2023
USD ($)
Sep. 30, 2023
USD ($)
Sep. 13, 2023
USD ($)
Sep. 13, 2023
EUR (€)
Oct. 04, 2022
USD ($)
Jul. 19, 2022
USD ($)
Dec. 31, 2023
USD ($)
Dec. 31, 2022
USD ($)
Business Acquisition [Line Items]                
Goodwill $ 249,176           $ 249,176 $ 197,284
TIE Kinetix Holding B.V.                
Business Acquisition [Line Items]                
Total consideration     $ 68,700 € 63.9        
Cash paid 73,558 $ 73,558            
Goodwill 44,757 $ 50,205         44,757  
Other Acquisition                
Business Acquisition [Line Items]                
Cash paid             1,500  
Assets acquired 900           900  
Goodwill $ 600           600  
InterTrade Systems Inc.                
Business Acquisition [Line Items]                
Total consideration         $ 49,100      
Decrease in provisional amounts for consideration transferred             3,100  
Decrease in estimated value of deferred income tax assets             3,900  
Increase (decrease) in estimated value of deferred income tax assets             1,000  
GCommerce Inc                
Business Acquisition [Line Items]                
Total consideration           $ 45,100    
Decrease in provisional amounts for consideration transferred             1,600  
Increase (decrease) in estimated value of deferred income tax assets             $ (1,500)  
XML 67 R50.htm IDEA: XBRL DOCUMENT v3.24.0.1
Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Details) - USD ($)
$ in Thousands
3 Months Ended 12 Months Ended
Dec. 31, 2023
Sep. 30, 2023
Dec. 31, 2023
Dec. 31, 2023
Dec. 31, 2022
Estimated fair value of assets and liabilities acquired:          
Goodwill $ 249,176   $ 249,176 $ 249,176 $ 197,284
Adjustments, goodwill       4,171  
TIE Kinetix Holding B.V.          
Business Acquisition [Line Items]          
Cash paid 73,558 $ 73,558      
Estimated fair value of assets and liabilities acquired:          
Cash 4,859 4,859 4,859 4,859  
Accounts receivable 1,267 1,347 1,267 1,267  
Adjustment, accounts receivable     (80)    
Other assets 3,640 2,981 3,640 3,640  
Adjustment, other assets     659    
Current liabilities (3,838) (3,606) (3,838) (3,838)  
Adjustment, current liabilities     (232)    
Deferred revenue (6,421) (6,421) (6,421) (6,421)  
Deferred income tax liabilities, net (7,869) (6,112) (7,869) (7,869)  
Adjustment, deferred income tax liabilities, net     (1,757)    
Total fair value of assets and liabilities acquired 28,801 23,353 28,801 28,801  
Adjustment, total fair value of assets and liabilities acquired     5,448    
Goodwill 44,757 50,205 44,757 44,757  
Adjustments, goodwill     (5,448)    
TIE Kinetix Holding B.V. | Subscriber relationships          
Estimated fair value of assets and liabilities acquired:          
Intangible assets 29,320 18,183 29,320 29,320  
Adjustment, intangible assets     11,137    
TIE Kinetix Holding B.V. | Developed technology          
Estimated fair value of assets and liabilities acquired:          
Intangible assets $ 7,843 $ 12,122 7,843 $ 7,843  
Adjustment, intangible assets     $ (4,279)    
XML 68 R51.htm IDEA: XBRL DOCUMENT v3.24.0.1
Business Acquisitions - Schedule of Estimated Fair Value of Purchased Intangible Assets and their Estimated Useful Lives (Details) - TIE Kinetix Holding B.V.
Dec. 31, 2023
Subscriber relationships  
Business Acquisition [Line Items]  
Estimated useful lives of intangible assets 8 years
Developed technology  
Business Acquisition [Line Items]  
Estimated useful lives of intangible assets 6 years
XML 69 R52.htm IDEA: XBRL DOCUMENT v3.24.0.1
Revenue - Summary of Revenues by Revenue Stream (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Revenue Recognition [Line Items]      
Revenues $ 536,910 $ 450,875 $ 385,276
Recurring Revenues      
Revenue Recognition [Line Items]      
Revenues 502,013 419,047 355,006
One-time revenues      
Revenue Recognition [Line Items]      
Revenues 34,897 31,828 30,270
Fulfillment | Recurring Revenues      
Revenue Recognition [Line Items]      
Revenues 436,702 364,148 306,851
Analytics | Recurring Revenues      
Revenue Recognition [Line Items]      
Revenues 51,703 46,894 42,674
Other | Recurring Revenues      
Revenue Recognition [Line Items]      
Revenues $ 13,608 $ 8,005 $ 5,481
XML 70 R53.htm IDEA: XBRL DOCUMENT v3.24.0.1
Revenue - Narrative (Details)
$ in Millions
12 Months Ended
Dec. 31, 2023
USD ($)
Disaggregation Of Revenue [Line Items]  
Latest timing of billings 30 days
Contract term maximum 1 year
Set up fees recognized period 2 years
Maximum recognition period for miscellaneous one-time fee 1 year
Deferred revenue $ 57.4
Minimum  
Disaggregation Of Revenue [Line Items]  
Customer contract cancellation period 30 days
Maximum  
Disaggregation Of Revenue [Line Items]  
Customer contract cancellation period 90 days
XML 71 R54.htm IDEA: XBRL DOCUMENT v3.24.0.1
Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details) - Set-Up Fees - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Deferred Revenue Arrangement [Roll Forward]    
Balance, beginning of year $ 14,999 $ 14,459
Invoiced set-up fees 19,146 15,457
Recognized set-up fees (16,542) (14,917)
Balance, end of year $ 17,603 $ 14,999
XML 72 R55.htm IDEA: XBRL DOCUMENT v3.24.0.1
Deferred Costs - Summary of Deferred Costs Activity (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Deferred Costs [Roll Forward]    
Balance, beginning of year $ 70,179 $ 59,720
Incurred deferred costs 89,012 72,509
Amortized deferred costs (76,441) (62,050)
Balance, end of year $ 82,750 $ 70,179
XML 73 R56.htm IDEA: XBRL DOCUMENT v3.24.0.1
Fair Value Measurements (Details) - USD ($)
$ in Thousands
Dec. 31, 2023
Dec. 31, 2022
Schedule of Financial Instruments [Line Items]    
Amortized Cost $ 216,898 $ 124,405
Unrealized Gains (Losses), net 694 375
Fair Value 217,592 124,780
Certificates of deposit    
Schedule of Financial Instruments [Line Items]    
Amortized Cost 6,805 6,813
Unrealized Gains (Losses), net 0 0
Fair Value 6,805 6,813
Cash equivalents: | Money market funds    
Schedule of Financial Instruments [Line Items]    
Amortized Cost 161,233 73,368
Unrealized Gains (Losses), net 0 0
Fair Value 161,233 73,368
Marketable securities: | Commercial paper    
Schedule of Financial Instruments [Line Items]    
Amortized Cost 48,860 44,224
Unrealized Gains (Losses), net 694 375
Fair Value $ 49,554 $ 44,599
XML 74 R57.htm IDEA: XBRL DOCUMENT v3.24.0.1
Allowance for Credit Losses (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Accounts Receivable, Allowance for Credit Loss [Roll Forward]      
Balance, beginning of year $ 3,066 $ 4,249 $ 4,233
Provision for credit losses 5,707 3,359 4,717
Write-offs, net of recoveries (5,453) (4,542) (4,790)
Initial allowance for business combination acquired receivables 0 0 89
Balance, end of year $ 3,320 $ 3,066 $ 4,249
XML 75 R58.htm IDEA: XBRL DOCUMENT v3.24.0.1
Property and Equipment, Net - Schedule of Property and Equipment, Net (Details) - USD ($)
$ in Thousands
Dec. 31, 2023
Dec. 31, 2022
Property, Plant and Equipment [Line Items]    
Property and equipment, cost $ 121,151 $ 107,816
Less: accumulated depreciation and amortization (85,108) (72,358)
Total property and equipment, net 36,043 35,458
Internally developed software    
Property, Plant and Equipment [Line Items]    
Property and equipment, cost 60,396 49,994
Computer equipment    
Property, Plant and Equipment [Line Items]    
Property and equipment, cost 34,402 30,310
Leasehold improvements    
Property, Plant and Equipment [Line Items]    
Property and equipment, cost 15,387 16,531
Office equipment and furniture    
Property, Plant and Equipment [Line Items]    
Property and equipment, cost $ 10,966 $ 10,981
XML 76 R59.htm IDEA: XBRL DOCUMENT v3.24.0.1
Property and Equipment, Net - Schedule of Depreciation and Amortization Expense of Property and Equipment (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Property, Plant and Equipment [Abstract]      
Depreciation and amortization expense $ 18,631 $ 16,421 $ 14,788
XML 77 R60.htm IDEA: XBRL DOCUMENT v3.24.0.1
Goodwill and Intangible Assets, Net - Schedule of Activity in Goodwill (Details)
$ in Thousands
12 Months Ended
Dec. 31, 2023
USD ($)
Goodwill [Roll Forward]  
Balance, beginning of year $ 197,284
Additions from business acquisitions 45,393
Foreign currency translation 2,328
Remeasurement from provisional purchase accounting amount 4,171
Balance, end of year $ 249,176
XML 78 R61.htm IDEA: XBRL DOCUMENT v3.24.0.1
Goodwill and Intangible Assets, Net - Intangible Assets (Details) - USD ($)
$ in Thousands
Dec. 31, 2023
Dec. 31, 2022
Finite-Lived Intangible Assets [Line Items]    
Gross Carrying Amount $ 154,071 $ 120,711
Accumulated Amortization (47,766) (32,189)
Foreign Currency Translation 1,039 (170)
Total future amortization $ 107,344 $ 88,352
Weighted Average Remaining Amortization Period 6 years 1 month 6 days 6 years 4 months 24 days
Subscriber relationships    
Finite-Lived Intangible Assets [Line Items]    
Gross Carrying Amount $ 105,228 $ 80,101
Accumulated Amortization (32,097) (22,255)
Foreign Currency Translation 724 (171)
Total future amortization $ 73,855 $ 57,675
Weighted Average Remaining Amortization Period 6 years 7 months 6 days 6 years 9 months 18 days
Developed technology    
Finite-Lived Intangible Assets [Line Items]    
Gross Carrying Amount $ 48,843 $ 40,610
Accumulated Amortization (15,669) (9,934)
Foreign Currency Translation 315 1
Total future amortization $ 33,489 $ 30,677
Weighted Average Remaining Amortization Period 5 years 5 years 4 months 24 days
XML 79 R62.htm IDEA: XBRL DOCUMENT v3.24.0.1
Goodwill and Intangible Assets, Net - Schedule of Amortization Expense of Intangible Assets (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Goodwill and Intangible Assets Disclosure [Abstract]      
Amortization of intangible assets $ 16,116 $ 11,768 $ 10,126
XML 80 R63.htm IDEA: XBRL DOCUMENT v3.24.0.1
Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets (Details) - USD ($)
$ in Thousands
Dec. 31, 2023
Dec. 31, 2022
Goodwill and Intangible Assets Disclosure [Abstract]    
2024 $ 18,842  
2025 18,704  
2026 17,700  
2027 17,226  
2028 15,959  
Thereafter 18,913  
Total future amortization $ 107,344 $ 88,352
XML 81 R64.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies - Narrative (Details)
ft² in Thousands
Dec. 31, 2023
ft²
option
Commitments and Contingencies Disclosure [Abstract]  
Current leased space | ft² 198
Number of extension options | option 2
Lease extension period 5 years
XML 82 R65.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies - Components of Lease Expense (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Commitments and Contingencies Disclosure [Abstract]      
Operating lease cost $ 3,123 $ 3,087 $ 3,089
Variable lease cost 3,771 3,576 3,660
Total Lease expense $ 6,894 $ 6,663 $ 6,749
XML 83 R66.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Cash paid for amounts included in the measurement of lease liabilities    
Operating cash flows from operating leases $ 5,022 $ 4,639
Right-of-use assets obtained in exchange for operating lease liabilities $ 1,147 $ 934
XML 84 R67.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Details)
Dec. 31, 2023
Dec. 31, 2022
Commitments and Contingencies Disclosure [Abstract]    
Weighted-average remaining lease term 3 years 1 month 6 days 3 years 10 months 24 days
Weighted-average discount rate 4.00% 4.00%
XML 85 R68.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details)
$ in Thousands
Dec. 31, 2023
USD ($)
Commitments and Contingencies Disclosure [Abstract]  
2024 $ 4,910
2025 4,694
2026 3,947
2027 1,299
2028 25
Thereafter 76
Total future gross payments 14,951
Less: imputed interest (922)
Total operating lease liabilities $ 14,029
XML 86 R69.htm IDEA: XBRL DOCUMENT v3.24.0.1
Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details)
$ in Thousands
Dec. 31, 2023
USD ($)
Commitments and Contingencies Disclosure [Abstract]  
2024 $ 14,536
2025 14,186
2026 6,342
Total remaining purchase commitments $ 35,064
XML 87 R70.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stockholders' Equity - Share Repurchase Plan (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Schedule Of Stockholders Equity [Line Items]    
Share Value Repurchased $ 128,892 $ 128,892
Common Stock | 2019 Program    
Schedule Of Stockholders Equity [Line Items]    
Share Value Authorized for Repurchase 50,000  
Share Value Repurchased 29,611  
Unused & Expired Share Repurchase Value 20,389  
Common Stock | 2021 Program    
Schedule Of Stockholders Equity [Line Items]    
Share Value Authorized for Repurchase 50,000  
Share Value Repurchased 49,992  
Unused & Expired Share Repurchase Value 8  
Common Stock | 2022 Program    
Schedule Of Stockholders Equity [Line Items]    
Share Value Authorized for Repurchase 50,000  
Share Value Repurchased 2,992  
Share Value Available for Future Repurchase $ 47,008  
XML 88 R71.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stockholders' Equity - Summary of Stock Repurchase Activity by Year (Details) - USD ($)
$ / shares in Units, $ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Equity [Abstract]      
Number of shares repurchased (in shares) 0 361,745 176,103
Shares repurchased cost $ 0 $ 43,215 $ 20,430
Average price per repurchased share (in dollars per share) $ 0 $ 119.46 $ 116.01
XML 89 R72.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Narrative (Details) - USD ($)
$ / shares in Units, shares in Millions, $ in Millions
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Shares available for grant (in shares) 12.7    
Unrecognized stock-based compensation expense $ 52.0    
Unrecognized stock-based compensation, expected to be recognized, weighted average period 2 years 4 months 24 days    
Employee Stock Purchase Plan      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Common stock reserved for future issuance (in shares) 1.7    
Stock options      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Vesting period 4 years    
Stock options contractual term range 7 years    
Outstanding and exercisable options (in shares) 0.3    
Weighted average exercise price (in dollars per share) $ 67.07    
Weighted average remaining contractual life 3 years 1 month 6 days    
PSUs      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Vesting period 3 years 3 years 3 years
Shares issued (in shares) (less than) 0.2    
RSUs      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Vesting period 4 years    
RSAs      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Vesting period 1 year    
DSUs      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Vesting period 1 year    
Award receipt delay 10 years    
PSUs, RSUs, RSAs and DSUs | Maximum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Vested at period end (in shares) 0.1    
XML 90 R73.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Stock-Based Compensation Expense (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense $ 45,508 $ 33,399 $ 27,574
Stock options      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 1,947 1,903 2,057
PSUs      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 11,886 7,509 6,417
RSUs & DSUs      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 26,185 19,282 15,388
RSAs      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 472 437 434
ESPP      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 2,488 2,144 1,391
401(k) stock match      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 2,530 2,124 1,887
Cost of revenues      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 10,169 8,684 6,760
Sales and marketing      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 9,774 7,590 6,248
Research and development      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense 7,200 5,634 4,384
General and administrative      
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]      
Stock-based compensation expense $ 18,365 $ 11,491 $ 10,182
XML 91 R74.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Stock Option Activity (Details) - $ / shares
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Options (#)      
Beginning balance (in shares) 562,697 678,650 944,886
Granted (in shares) 42,215 56,430 53,223
Exercised (in shares) (254,353) (164,393) (311,378)
Forfeited (in shares) (3,737) (7,990) (8,081)
Ending balance (in shares) 346,822 562,697 678,650
Weighted Average Exercise Price ($/share)      
Beginning Balance (in dollars per share) $ 56.24 $ 44.76 $ 36.71
Granted (in dollars per share) 152.68 122.59 105.53
Exercised (in dollars per share) 38.75 29.86 30.10
Forfeited (in dollars per share) 129.43 92.48 68.62
Ending Balance (in dollars per share) $ 80.02 $ 56.24 $ 44.76
XML 92 R75.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Summary of Additional Information Related to Stock Options (Details) - USD ($)
$ / shares in Units, $ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Share-Based Payment Arrangement [Abstract]      
Fair value of options vested $ 1,966 $ 1,996 $ 2,509
Intrinsic value of options exercised 31,227 16,705 27,713
Intrinsic value of options outstanding $ 39,474 $ 40,692 $ 66,235
Weighted-average fair value per share of options granted (in dollars per share) $ 56.47 $ 41.34 $ 31.31
XML 93 R76.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Details) - Stock options
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Life (in years) 4 years 2 months 12 days 4 years 3 months 18 days 4 years 4 months 24 days
Volatility 39.00% 38.00% 35.00%
Dividend yield 0.00% 0.00% 0.00%
Risk-free interest rate 4.00% 2.50% 0.59%
XML 94 R77.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - PSU, RSU, RSA, and DSU (Details) - PSUs, RSUs, RSAs and DSUs - $ / shares
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Number of Shares      
Beginning balance (in shares) 712,158 702,160 738,422
Granted (in shares) 416,377 312,880 314,290
Vested and common stock issued (in shares) (344,087) (276,872) (331,669)
Forfeited (in shares) (11,034) (26,010) (18,883)
Ending balance (in shares) 773,414 712,158 702,160
Weighted Average Grant Date Fair Value ($/share)      
Beginning balance (in dollars per share) $ 103.93 $ 78.03 $ 52.37
Granted (in dollars per share) 163.55 126.44 101.85
Vested and common stock issued (in dollars per share) 77.52 64.12 44.14
Forfeited (in dollars per share) 122.97 99.37 66.35
Ending balance (in dollars per share) $ 147.50 $ 103.93 $ 78.03
XML 95 R78.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Summary of ESPP Activity (Details) - Employee Stock Purchase Plan - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Amounts for shares purchased $ 8,114 $ 6,676 $ 4,737
Shares purchased (in shares) 63,641 70,107 55,726
XML 96 R79.htm IDEA: XBRL DOCUMENT v3.24.0.1
Stock-Based Compensation - Fair Value Estimation of Common Stock, Assumptions (Details) - Employee Stock Purchase Plan
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Life (in years) 6 months 6 months 6 months
Volatility 36.00% 42.00% 32.00%
Dividend yield 0.00% 0.00% 0.00%
Risk-free interest rate 4.92% 1.27% 0.07%
XML 97 R80.htm IDEA: XBRL DOCUMENT v3.24.0.1
Income Taxes - Schedule of Provision for Income Taxes (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Current      
Federal $ 20,168 $ 13,881 $ 1,559
State 4,221 4,149 1,890
Foreign 2,103 1,990 1,610
Deferred      
Federal (5,425) (2,530) 4,294
State (390) (751) (88)
Foreign (938) (549) (321)
Total provision for income taxes $ 19,739 $ 16,190 $ 8,944
XML 98 R81.htm IDEA: XBRL DOCUMENT v3.24.0.1
Income Taxes - Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income (Details)
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Income Tax Disclosure [Abstract]      
U.S. statutory federal income tax rate 21.00% 21.00% 21.00%
Increase (decrease) resulting from:      
U.S. state income taxes, net of federal tax effect 5.10% 4.60% 4.50%
Tax impact of stock activity (5.60%) (4.70%) (12.80%)
Nondeductible compensation 4.70% 3.50% 5.00%
Research and development credit (1.50%) (1.50%) (1.10%)
Foreign derived intangible income (1.30%) (1.40%) (1.30%)
Other 0.70% 1.20% 1.40%
Effective tax rate 23.10% 22.70% 16.70%
XML 99 R82.htm IDEA: XBRL DOCUMENT v3.24.0.1
Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Details) - USD ($)
$ in Thousands
Dec. 31, 2023
Dec. 31, 2022
Deferred income tax assets    
Net operating loss and credit carryforwards $ 10,212 $ 9,970
Stock-based compensation expense 6,304 5,084
Accrued expenses 6,067 4,469
Operating lease liabilities 3,470 4,384
Research and development capitalized 17,007 9,591
Other deferred income tax assets 2,705 2,408
Gross deferred income tax assets 45,765 35,906
Less: valuation allowance (2,545) (1,873)
Total net deferred income tax assets 43,220 34,033
Deferred income tax liabilities    
Deferred costs (20,672) (17,696)
Right-of-use assets (1,884) (2,338)
Depreciation and amortization (28,066) (20,282)
Other deferred income tax liabilities (1,065) (909)
Total deferred income tax liabilities (51,687) (41,225)
Net deferred income tax liabilities $ (8,467) $ (7,192)
XML 100 R83.htm IDEA: XBRL DOCUMENT v3.24.0.1
Income Taxes - Narrative (Details)
$ in Millions
Dec. 31, 2023
USD ($)
Domestic Tax Authority  
Income Tax Expense Benefit [Line Items]  
Net operating loss carryforward $ 28.9
Losses expected to expire unused 6.5
Domestic Tax Authority | U.S. Internal Revenue Code  
Income Tax Expense Benefit [Line Items]  
Net operating loss carryforward 28.9
State and Local Jurisdiction  
Income Tax Expense Benefit [Line Items]  
Net operating loss carryforward 5.6
Foreign Tax Authority  
Income Tax Expense Benefit [Line Items]  
Net operating loss carryforward $ 9.8
XML 101 R84.htm IDEA: XBRL DOCUMENT v3.24.0.1
Other Income and Expense - Summary of Other Income (Expense), Net (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Other Income and Expenses [Abstract]      
Investment income $ 7,660 $ 1,670 $ 278
Realized gain (loss) from foreign currency on cash and investments held 1,726 (1,026) (1,456)
Other expense, net (1,071) (502) (366)
Total other income (expense), net $ 8,315 $ 142 $ (1,544)
XML 102 R85.htm IDEA: XBRL DOCUMENT v3.24.0.1
Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Details) - USD ($)
$ / shares in Units, shares in Thousands, $ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Numerator      
Net income $ 65,824 $ 55,134 $ 44,597
Weighted average common shares used to compute net income per share      
Weighted average common shares outstanding, basic (in shares) 36,646 36,117 35,928
Options to purchase common stock and ESPP (in shares) 265 382 529
PSUs, RSUs, RSAs, and DSUs (n shares) 564 454 505
Weighted average common shares outstanding, diluted (in shares) 37,475 36,953 36,962
Net income per share      
Basic (in dollars per share) $ 1.80 $ 1.53 $ 1.24
Diluted (in dollars per share) $ 1.76 $ 1.49 $ 1.21
XML 103 R86.htm IDEA: XBRL DOCUMENT v3.24.0.1
Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details) - shares
shares in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Earnings Per Share [Abstract]      
Anti-dilutive shares (in shares) 36 75 31
XML 104 R87.htm IDEA: XBRL DOCUMENT v3.24.0.1
Retirement Contributions - Narrative (Details)
12 Months Ended
Dec. 31, 2023
Retirement Benefits [Abstract]  
Maximum allowable contribution by employee percentage 80.00%
Defined benefit plan employer matching contribution percent 50.00%
Maximum annual contribution per employee, percent 6.00%
XML 105 R88.htm IDEA: XBRL DOCUMENT v3.24.0.1
Retirement Contributions - Schedule of Total Contribution to the Plan (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Retirement Benefits [Abstract]      
Retirement contributions $ 6,627 $ 5,386 $ 4,790
XML 106 R89.htm IDEA: XBRL DOCUMENT v3.24.0.1
Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes (Details) - Geographic Concentration Risk - Domestic revenue
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Revenue Benchmark      
Property, Plant and Equipment [Line Items]      
Concentration risk, percentage 84.00% 84.00% 84.00%
Income Before Income Tax      
Property, Plant and Equipment [Line Items]      
Concentration risk, percentage 94.00% 91.00% 89.00%
XML 107 R90.htm IDEA: XBRL DOCUMENT v3.24.0.1
Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States (Details)
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Property and Equipment | Geographic Concentration Risk | Foreign    
Property, Plant and Equipment [Line Items]    
Concentration risk, percentage 15.00% 13.00%
XML 108 R91.htm IDEA: XBRL DOCUMENT v3.24.0.1
Related Party Transactions - Summary of Contributions to Foundation (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Contributions to Foundation      
Related Party Transaction [Line Items]      
Foundation contributions $ 2,300 $ 2,750 $ 2,400
EXCEL 110 Financial_Report.xlsx IDEA: XBRL DOCUMENT begin 644 Financial_Report.xlsx M4$L#!!0 ( -R85%@'04UB@0 +$ 0 9&]C4')O<',O87!P+GAM M;$V./0L",1!$_\IQO;=!P4)B0-!2L+(/>QLOD&1#LD)^OCG!CVX>;QA&WPIG M*N*I#BV&5(_C(I(/ !47BK9.7:=N')=HI6-Y #OGDK7A.YNJQ<&4GPZ4A!0W_J=0U[R;UEA_6\#MI7E!+ P04 M " #C/>">X K @ $0 &1O8U!R;W!S+V-O&ULS9+! M:L,P#(9?9?B>R$E&82;-I:.G#@8K;.QF;+4UBV-C:R1]^SE>FS*V!]C1TN]/ MGT"M\D*Y@,_!>0QD,-Y-MA^B4'[-3D1> $1U0BMCF1)#:AY/\9^@S3"K!'BP-%J,H*6#=/ M].>I;^$&F&&$P<;O NJ%F*M_8G,'V"4Y1;.DQG$LQR;GT@X5O#WM7O*ZA1DB MR4%A^A6-H+/'-;M.?FTVC_LMZVI>WQ>\+NIJS[G@*]$\O,^N/_QNPM9I621A'^_1S80RY8-[9)-NIL\!"SI^\Y%1^?H.'GS[BYBZ(:(E/)X M8-DOV]:[MR_>X%#BVR]*+ M41B1%G\@M MNN01.+5)#3(3/PB=AIAJ4!P"I DQEJ&&^+3&K!'@$WVWO@C(WXV(]ZMOFCU7 MH5A)VH3X$$8:XIQSYG/1;/L'I4;1]E6\W*.76!4!EQC?-*HU+,76>)7 \:V< M/!T3$LV4"P9!AI@S M&L%&KQMUAVC2/'K^!?F<-0HACA*FNVB<5@$_9Y>PTG!Z(++9OVX?H;5,VPLCO='U!=*Y \FIS_I,C0' MHYI9";V$5FJ?JH,@H%\;D>/N5Z> HWEL:\4*Z">P'_T=HWPJOX@L Y M?RY]SZ7ON?0]H=*W-R-]9\'3BUO>1FY;Q/NN,=K7-"XH8U=RSTS0LS0[=R2^JVE+ZU)CA* M]+',<$X>RPP[9SR2';9WH!TU^_9==N0CI3!3ET.X&D*^ VVZG=PZ.)Z8D;D* MTU*0;\/YZ<5X&N(YV02Y?9A7;>?8T='[Y\%1L*/O/)8=QXCRHB'NH8:8S\-# MAWE[7YAGE<90-!1M;*PD+$:W8+C7\2P4X&1@+: '@Z]1 O)256 Q6\8#*Y"B M?$R,1>APYY=<7^/1DN/;IF6U;J\I=QEM(E(YPFF8$V>KRMYEL<%5'<]56_*P MOFH]M!5.S_Y9KF4Q9Z;RWRT,"2Q;B%D2XDU=[=7GFYRN>B)V^I=W MP6#R_7#)1P_E.^=?]%U#KG[VW>/Z;I,[2$R<><41 71% B.5' 86%S+D4.Z2 MD 83 >LX=SFWJXPD6L_UC6'ODRWSEPVSK> U[F M$RQ#I'[!?8J*@!&K8KZZKT_Y)9P[M'OQ@2";_-;;I/;=X Q\U*M:I60K$3]+ M!WP?D@9CC%OT-%^/%&*MIK&MQMHQ#'F 6/,,H68XWX=%FAHSU8NL.8T*;T'5 M0.4_V]0-:/8--!R1!5XQF;8VH^1."CS<_N\-L,+$CN'MB[\!4$L#!!0 ( M -R85%B :)*PD0< /

&PO=V]R:W-H965T&UL MM9MK<^(V%(;_BH;N='9G0O %R&:;,$,,M'0W"87L[J2=?A"V ,_:%I7E7/Y] MC\W%.",?[!WQ)6#C\V(]2/)YI9.K9RY^Q"O&)'D)@RB^;JRD7']JM6)WQ4(: MG_,UB^"3!1+UA 7^^;IB-W8FIOUS)]$2K=[6F2S9C\NMZ(N"HM5?Q_)!%L<\C(MCB MNM$W/PWLRS0@N^*;SY[C@_O_M WA$_(C=^$,"/$E^U)'Q%>F'+W46!%MS;_@:MW0W>6*CB@+GGQ#;/B&58MN*&'#Q\Q.;GQ+2S\+8B?("' M_YE$\.V&ZML+K;'WN.U,ST9Q_].?QU) E_]717BCT%8KI// IWA-77;=@($> M,_'$&KU??S&[QF\J.CK%!IK$"N3:>W)M3+TWX&X"\XTD#Z]KIL*&AYM&\[.* M#QI5EX\FL0*?SIY/IQJ??A0E-"!3MN9"JD#A.E(D*KP.&E47E":Q JCN'E07 M;:"3")%R&OFQ"YP>&17I9$5@^E3V*URMV32MIFVJB*&!=8EI$BL0N]@3NZC6 MM29,^-Q#:1U1VDWFI;,Y&E\7FB:Q K2/>V@?*\Y7@D*6E"4YY6,2UUK0(%8. M2C2L+BU-8@5:EWM:EV@+AY'TY2N,R8"1NR2<,Z&BA&L8AMFTVQ>&I2*%AM8E MI4FL0,HT\HS-J,)JRI9^FD5 %[NCH7(P'A&:36;$N;^]'4Z=X1D9WSGG*G*X M2%UTNM2*[ ZR7;,*NW'D<@%CD:;#\HS,),QFA OB\"22XA5>/3507'TP5 )$ M@VH#U*16!&CE *TJ !_H"QE[,+WY"]_-*"+#]HADVVQ:AMDQK0LE/32X-CU- M:D5Z>?9OHBGRCE[?\T ]/MN](5_@.G(?J?L<+FG;-IF!H5^1&7N"'P1>I0 W MJ&2IU0WH4BNRS/V B6?T*,N'9ZYDB4O.$A_F =,P#"4]K5Y!EUJ17NX63#S- M?TO/28]@!GS@SY&2'"YWZT<1HVL>^*I% P>/KHWN%/;!S/V#B:?\;]'MGQX3 MP9_\R%6/8ESS]DZ)3:N%T*56Q):;"!//_=]BF_!8@O_ZVU^7/VYQQ4ZGK4[V M\+C:W$YA(\S<1YAX\I^-S+Y@M!P3+M UU9"TF@==:D5(N7TP\=S_"T^]_&3% M(\P_'!%IVYWF9;MD\M=J('2I%5=4%A"+G?3'+WQQE94T&>:) P\LXX!SM&UDR0>$6%TKSBTG61ZE(K(LV- MA86G_N#R/3]:DMEK..>!DB0N &;,45+2ZAYTJ14IY>[!PE/]74\CPQ=W1:,E M*[6N1X3N^K-!_R\E+ZU^09=:D5?N%ZQ*?N$["X+FCPA2,QBK-(9)SB/C.$[4 ML]P1S4>F3-'PJ-K<3N$-K-P;6)6\P3<>@)^G8K.P))3[64>4[E0^PL&#:L,Z MA16P&*95U,JPO0I5:DEKL JY(+&$>2B&:1NINAPN68]-J#W2I%4L4;HR,_HI'K@W?/5M&R(YFM6%* MBKA^.46M[D"76I'B02U1)7:![\+@Y%29=N JM0N*]%84;=0ZF5I:H_C4 MN[AJ/:FPY,F_72GY+RY-S-)5B)C<)Q(FLRBUZDI4.O-Z9ZO6/6B<$@G56O:1]3O7>^W@[O'F;IUO+] M='(_[3\,!^3FD4R'H^%T>.5XJDKRBKN8^*F=2^;HO']V7U5?S^K96_EEV_^)>"6IJ8J M)@%;0*AQ?@$SK=A4V6\.)%]G=>=S+B4/L[0?L'^?QUZ M_P-02P,$% @ W)A46">-J_,R @ K 4 !@ !X;"]W;W)K>IK !& MU%A4P,W.7DA&M)G*@Z]''B.4XS1V:UN9QJ+6)>6PE4C5C!'Y M9PFE:!(!/-E9.-= MP'<*C3H9(YO)3H@7.[G/$^Q;("@AT]:!F-"(+H@"#M!Z+C;@QSEBFB2QE(T2-IHXV8'+E6G-G"4VX_R MK*79I4:GTT6=4XWN>?MYS3W%GC:V=M/+.HME:Q%>L A"M!%<%PI]YCGD_QMX MAJ>'"H]0RW#0<079&$V"$0K]<#+@-^F3G#B_R;5)HI^+G=+2_!*_SN7;NDW/ MN]DRF:N*9)!@4P<*Y"O@]/V[(/(_#;!.>];ID'O+*B2ZHY*A^]4YO&&#X&8V M@#'K,69783P2!N<8AM4/V\V7$5JOMP,D44\2746R%MG%'W3884,Y!U*)DJH1 MVCR>8_).*HB!/+@^H5 F:J[;8NI7^U:T:"OP7WC;QS9$'BA7J(2]D?KC#^:J M9-L;VHD6E:O'G="FNMVP,.T4I TP^WLA]'%B#^@;=/H74$L#!!0 ( -R8 M5%@6<#H]4P< "\A 8 >&PO=V]R:W-H965T&ULK5I; M;^.V$OXKA+OHZ0+VFC?=-HF!W2S:TX>BP6;;\\S(3"RL)+H2Y6SZZ\]0=B1; MO#@!\I!$LH?#;X;#^6;(7#ZJYGN[D5*C'U59MU>SC=;;C\MEFV]D)=H/:BMK M^.9>-970\-H\+-MM(\6Z'U252XIQO*Q$4<]6E_UG-\WJ4G6Z+&IYTZ"VJRK1 M/'V6I7J\FI'9\P=?BX>--A\L5Y=;\2!OI?YK>]/ VW+0LBXJ6;>%JE$C[Z]F MG\C':T[-@%[B[T(^MD?/R)ARI]1W\_+[^FJ)9REP;%0+^[.2U+$NC"7#\ M6]Z$K]53W^5QX,BHR^ M7)5M_QL]'F3Q#.5=JU5U& P(JJ+>_Q4_#HXX&D"X9P ]#* O'< . UAOZ!Y9 M;]87H<7JLE&/J#'2H,T\]+[I1X,U16V6\58W\&T!X_3J6M6M*HNUT'*-/HM2 MU+E$MT9=BQ;HK]LOZ)=W[]$[5-3HVT9UK:C7[>52P\QF_#(_S/)Y/POUS/)% MYA\0(W-$,66.X=WW,9W37-++62+0MV.DR9S^>N\>; MK?6QW8I<7LU@[[2RV?2(PO7,:]D;(34]E@*@MI7UV+=H-@T5!N'N0_ M7;$3)=CNM'JO*NI5F?V_6U&2X91<+G?']MAB)*9IQ@:Q$Z1\0,J#2&\WJM$+ M+9L*@FTG6UWY8.[UQ$?S1S&+L@E*AQ3AA+I!1@/(* CR4YZK#F!!!LLEN/*N ME"Z$D3TWA@6=(+2E. 4Y-\)X0!B'$9:0F?M=##D>Y8U<%QJ5"B+=ZRZQ)29Q$Z02:2XJ1 MS V-X)%:U)RL+B:<3_..0XY1FA+N 7K$@20(]*:!LJC1 M3WVB-#ER:W*/-Q@/VDYPQ)A/%]PE%O$CYY^B'[VV;GDK;:?&CD1&PDQVFGAA352]."03I^TV25',>#)=&EN, M))SZ@F@D,Q)FLP%M4>>JDDB+'Z&%LJDJPM$4JBU$:>(!.M(9"?/9<0R==ZK- M6H10:V?:4I2D'FHC([>1,+GM^2/@1)NW4LI2>S?: MJI(>-7=A?@2$3=>GC6HKZU:8XP(G2IOJ.(G2:7'D$&/0Q7JBFXZ42,.4^ Q3 M_C H/9%C4UZ*R32^'5()CSQ]!!UID89I<7H"AG&GJZ0C:3)PEVAJU Z$V?,;OQ2 MJ/RGQU*V5,)]72P;"8^%"<_:"6?]RVQBHW3J7H>0I\MB(_.Q,//M4\PY9]I\ M1J*86>OODF-1RCVARXY.),\<2:JJ*O:G>_N3256;0)9U[D,J7,NF_4]_Q*"?G*8&*?FU&?6MM)T:/;(S"[/S3?.\ MU5MC_AR]PQ\P)E Y-F@GRDY>H&B.,38_J-T(P(!$IS>J*?Z5ZPLT?%BTK:F4 M3+"H3K?0K:\A8)S^L[E[FI"#(J>6CMS.PMQN0EK5?C.!DT.&LG2>)61.>-S; M"*\,9_#*3QUPL?\VGJ<45/'T^16*5GB-GX6/7#0',FNWLK\J*]T!9Q<0S,H$ M#AG/*18;"PP6[I>_-<%3_&/Y0(+EPN?UNO"=!:0<+>B6"^*&N5B6T "=@)VG/ZR!,?6U8JK6H@) M\52?;*P76+A>^"JU@(^@W1!-#9'A=JM-^33*,)\>3#CD2,8H]5 #'VL#'JX- MH"?JJJ[L+R-5S[NFB6ODQMP;[R1Z !O0+^8VX[WS8LBN "B=AH1#:,$X\6$? MZP0>KA/VY-L>)?J??THI22X"Z9[;14 <)SR9.MPA9\(G\5VYC14#?V7%T.>4 M5QI!K?M YS&,0\YY#+,\NLTV_TKPAV@>BKJ%0O<>!N(/"6AH]K?S^Q>MMOT% M]YW26E7]XT8* &\$X/M[I?3SB[DS'_Y'8O5_4$L#!!0 ( -R85%B)*TV3 M'P, X+ 8 >&PO=V]R:W-H965T&ULK99=;YLP%(;_ MBL6FJ96Z@/D*Z1*D-E6U74R*FGU<3+MPP0E6#6:V2=K]^ME &20T)-UR$; Y MY_7SF@.9NK)B/$52#?G:%#G' M*"Z34FK:EN6;*2*9$4[+N04/IZR0E&1XP8$HTA3QIVM,V79F0.-YXHZL$ZDG MS'":HS5>8ODU7W U,AN5F*0X$X1E@./5S+B"EW-8)I01WPC>BM8YT%;N&7O0 M@T_QS+ T$:8XDEH"J<,&SS&E6DEQ_*I%C69-G=@^?U:_+<>V'W%MR--Z$:.B_ ?;*M8;&R JA&1IG:P(4I)51_18;T0K M ;HO)-AU@GUL@E,G.*71BJRT=8,D"J><;0'7T4I-GY1[4V8K-R33MW$IN;I* M5)X,YRP3C)(821R#:T11%F&PU'("G"T0QYE,L"01HN?@/7@+3" 2-2NFIE2K M:PTSJE>ZKE:R7UCI!D\X+>4BK+ MJAXE8"MP2S)EG" *%DR0LKY^7-T+R565_>RS6FF[_=KZT;L4.8KPS%#/EL!\ M@XWPW1OH6Q_ZC/\GL+D"..-@@6F!P1C(0 M,TH1%R#'O+KQYWV[42TQ+I?0[XU-:(TL"T[-3=OF4%2'WVWXW=/XJ_($J) ) MX^2WNJ!]5+.]\)6^W\+RK/*W@S\U"[VH8@.L-\ M^Z\"5M\((5$6DVP]1.T/4A^*Z%"/&^KQ0>HY2U/U5/]#D8^/*O*AJ Y\T, ' M)\"?7.'!WF9":/76^#&1'0>3QL'D= ?'E?ADC\D))F,(77\'OB_0L2;0=?O9 MH?7W&VF=3G]"O=?R'30_4)V6&^QXZ(V$7F"UW'9-M#[T\*")+ZK+$P5_VK$Q MA [W@&SH06NR1SX<6(&;K69%=XJ?$5^33 "*5RK3&HW5&XM7S5HZRO&Y/- MT1-"QS^ 5!+ P04 " #M#UR)IMX=A#XQ%VUHET2-I)^VO'RG+DDU26CKXQ;;D M[T[\CG?'3^3M,Q=?Y(HQ!5[*HI)WHY52ZYOQ6,Y7K*3RFJ]9I?]9<%%2I2_% MJR"OV40"Y*4LJOMZS@C_?C>!H M?^,A7ZZ4N3&>W*[IDCTR]7G]4>BK<>LERTM6R9Q70+#%W>@-O)FAU!C4B-]S M]BP/?@-#Y8GS+^;B778W"LR(6,'FRKB@^FO+IJPHC"<]CG\:IZ/VF<;P\/?> M^]N:O";S1"6;\N*//%.KNU$R AE;T$VA'OCSKZPA%!E_,M ^^J.2\9N *?'V?@_.P"R!453(*\ I]6?"-IEHCF0>-Y,YS[W7!0SW @ N]YI582_%QE+#MV,-;<6H)H3_ >#7JN_>$>?\TLM!,%_GSS))70U?.7+]@[9Z'? MF6DI-W)-Y^QNI"=:,K%EH\F//T 2_.0+U"F=S4[D["B(81O$<,C[Y(%M6;5A MWO3<64:UI>F9VTF$20J#V_'V,!8N+(R")(Z.83,7AI,(Q:2%'8T_:L.P\D(,GPP0%)+5X>& 1#HC-PP/#D,2)GP=I>9!!'K\(+B58"[[( ME8\#<9Z*HS )H<7!A:$T3NPIFWE@$8[2'@YQRR$>+,@/:R:HRJLE8"]Z+9;^ MV8A/68>G=#8[D;.CV"5M[)+!^7^DA5Y ]$*A%S3QA9DH^H*7N,F'4(J)E08> M6 #C&%EIX,*2) A#?Q:D+9/T/SJ*9%3,5S693)=EP=>F/?OHI,X =(>)0HN- MBPJC.$PL,BX*IP'N26D8=)H@&"Y,5NFL+FHV--.J(S=KC!%HWA4]<$,:)DEL M,?+ 2(Q#NTQ],(B#J(?3@E%RH_!NMU:9NGGFE:+7,GPH&J)1,^<4* M=).*0&BGG@\&8V+/E@\60-2S&D#444.#U#YQI2>+OZH3-:Z.VF <1RFV*7EP MB!#D<')Q,$TBB'M(=4('#DJ O=)9"%[NJ6FIZJ6$G2'HLK=K9>J#0;THVH1< M6*27]K[\ZS0''!8=']2*"9UU-:OS9HHN+D'%O%VB\7945!A&-B<7!4.'D0NZ M@E%?RX.="H'#,J29H2>FWS[9GIFB+SV)YVJ()(J(DWP772;W-3N7M.*2=4H'#4N6M+M9\68'Y1@A6S;\"O;)7LMBMBS3[>R-5O0/@ M#:M';V!WZ7!15PBY"[T'%L&>M$>==D'#VN5S)1@M\F\L TN:5^"\T"\9%T"3 MRZLM:\C5;=>H %/H^NN,A.$E.(-A?%F+GK-S'.K>K.._9O7&5/'5%P_D:A68 M8JO_3CVHT'Z)F7E 5S! /='H5 \:5CT/;%YH>9,O\GFK?,Y-7"Z B8L5%B.* M.-!*MM(RP@W2>41,5/1W=-'$B>!71,F5/5>0I$Z8O##[3=2#.NRHQV'J%!1Z ME8+ZG]T&N1H($VR7A0=U!5-BMU(?+.S3B*B34VA83DT]K+Q"ZT*UM0$O#W5:DE\V@)OO>=>"DWF:G\G8< MPDZ]H6'U=D]E/@?GND-FO"BHD%TD_4F^%#H;[.WVDW M-*S=9GFQ,;O8W\&)> 82VV]W7E28VJ1\*-27Z9V*0\/[2W_4!Q>:%=WJ=Z E M,^VIU%V[V7W?2/V7[MFF:6GR=<=^56&<=$?JI-YFI_)V'/%..NXV$"0F=U/'!((SMW/' HA3U[..@3NNA8:UW6!%#9#RR+@[MS>RI#T92 MM[J],&)+F?'!F57)Q+(^^Y,ZD3>5VIWNM'?;\\4W]:F:=?\>WLQVIX2=F]VA MY7LJEGDE0<$6VF5P'>N^(W;G@+L+Q=?UR=@35XJ7]<\5HQD3!J#_7W"N]A?F M >UI[.1?4$L#!!0 ( -R85%C1SC_YS ( +,' 8 >&PO=V]R:W-H M965T&ULK57);MLP$/T50@T*&T@B:W.*U!80VRV:0P C;MI# MT0,MC2TB%.F2M)WVZSND9,4[&G/[8U5VI-+PYF ML2)Z6994_1T E^N^%WB;C4@LYA N9I,5:X\AN6G)4@-)."*)CU MO;O@=I18>V?P@\%:;\V)53*5\MDN[O.^U[$. 8?,6 :*PPJ&P+DE0C?^U)Q> M/Y#"C2VX>Y?H;U'J<@YGDVGW)NK;M M>"1;:B/+&HP>E$Q4(WVIX[ %"+HG &$-"/*?5-@4KX#[Y! M[^P=?E9[,J@\"4]X$H3D02*S)E]$#ODN@8^R&FWA1ML@/,LX@NR:1,$E"3MA M=,2AX=OAX1'XZ.WPX(R:J,E4Y/BB$WQU IH? M8TTD+2ZU;A,L0$RL0!OW\U\20U^.Q;3B3ARWK:>KM!O'/7^U':I#FR"^V;49 M'=I<1:\\.\*21EAR5M@C9)QJS6;X+%U!Q0>\?!7;LFK;Q*K=$XMS(PE0)9B8 MGY:>'+J<=/>U'S-*]K0?VG2C/>G^5CDK0?Z!AU258NH%D8N7-&<2H,EV$T+[*J@K &> MSZ0TFX6]H.G3Z7]02P,$% @ W)A46.H%*T%;"@ E6( !@ !X;"]W M;W)K=%?3U:-3;ZGY2;RJ1 M+KM*ZWR"?3^Q$SD>4N2[?A]#QT=8K85 MCU]_I;/NXN7%?$IK,2OS?V7+9G4]BD?>4MREV[RY+1]_%OL+"EK>HLSK[E_O M<59F5A9UF6?+M!%+[T,C?\@\:VJOO)/ORL7G M59DO157_Q4M^WV;-DS?V/GZ8>Z]^>.W]X&6%]]NJW-9IL:RO)HUL39_4J8FW4K&CE5R&Y/TJK(BGM;'_(SS5DLMNMMWHGWCV8E M*D]VCYR25NU<\2 \+@-XK_Y6UO5K%3Z1:7+(%7S(%=Q%HR>BO1/W6=&V5 [^ M/"T6PGLE\?4JK43]VDL;;RX6;SR"?O2PCWU;1CCY[:S[MMZD"W$]DM=0B^I! MC&[^_"<4^G^UYNA(^L)CS,D?.L8@87-J#%@4(H(#K6,3R* ,$L:!8$IF!(?, M"#HZ.9$9OQ2+]N8E$T*F0/?J=7L'MMZE_WU;YKDGG]4>TVKY'UN6!)!9 @F; M0\(22!B#A'$@F))*X2&50N$J#C)E PA@DC /!E.2(#\D1 R2'+2%B M0\,IB:@V"<3& Y'V)#=W-F^HQM8V$6U@0T;D0#!%N^E!NZE3NV2]R&MT>!!'6)M0Y9,@$$L8@81P(IF0$\GOOQO_V MG.A,/ODP:'5F?/.35Z1_J)JYHP^]JX/2DCTM=%X! XW)H6BJVD=.'7*J?2N^ M"MS9&^_ M(:057%0 MN9P S6_0&ES9'II*(JG)# ^1(,Z8* T#D53MZ3T'ACVO^.R*(8TC&:@M#DH M+0&E,5 :AZ*I*=4;;=AMM U9'L6F#T80C@)MXG9'')P)D+3DLDM@H$$Y%$V5 M^&@GF]MZ@UDF=0<9/%N8&]HH]2DVMK/![F>#W= &NZ/M)7P[W/MVV.W;??MR M*;986%,_UB<%4$L/E)9<= 4,-":'HJER]XX>=CMZSUEA=:,'SP2F@Q7YR#Q,(STS5/NZ(/G 5"[#YN6FGD% M##0FAZ*I:O=V'SYG]WWS.BLV#:?!"PO.+RV8N"]J\/ %]>&@:*J@ MO6&'W8;=P'76/4TQ4"C!R- 0TK2:7Q@U 8W*0&DE/ M!0$B^JJ;.\9@54%WO('2V&4=PJ&"JJ+V]A]VVW_/66?%IK\VQICJRRON%@R6 M''3K&RB-@=+XV>Y5CQ+UEAYQ;VL#66DEE@UBU#A9!&K0@=(24!H#I?$SG:OJ MWOMNY-P&MY=;9]V'5D]KA?HMW=W P?D :M.!TA@HC1/;;L"CWE43HG?IB-NE MNWSI!ULUMYP0#5$0^U3_!'9QR;F[Q8,U!37?0&DF!.N'7;FEW)A0 M=&IR[=TMN98,BTI^=D$^5/=U'0W8_ 4>F'8!#0L Z5Q*)JJ?.]>D>]Y M<)2 GAP%I(B-P!TCW*/64_]18(75'')P)H'O7T9AP8S^7GCY2Z6SA8:VNSC($.>JH4BJ9JV!MLY.4.EKK1@X>W MZ2>%)-1-FSEHT 24QD!I'(JF?A--[\/1%SI>2LWCI3$RSK>XHP^]XX/2$FH: M7.85,-"8'(JFJMV[;_3%CI=2T_[1/79W\,%B@SIKH#0&2N-0-#4I>@>.@AY1 MI>9A42,10$^G@M(24!H#I7$HFIH(O1U'GW.&E9JF51C$V)CQ03>\@=(24!J[ MK$,X5%!5U*/OFG-[@L]96Z6F,T?(5+=:W0T8K#CHAC=0&@.E\7.]JPK>6X'T M.YQAI>:6L-;)UI4'=?9 :0DHC8'2^+G>597O'3OZ_SO#2DV';XQ"?:5DYF[A MX(P =?A :0R4QJ%H:N;T1B"%.NY*K,EA.Z :8]^G^LK1Q27G[A8/UA[4WP.E M<2B:JGWO[]'G'&6UZVU:=F$84].4F^XK^#^535.NNY9W#:< M+4VA334C01#/-JRL)_-K\]U=,[\6N[8J:W[7(+G;;%AS^,@K\70SP9.7+[Z4 MC^M6?S&;7V_9([_G[=?M7:,^S?HHRW+#:UF*&C5\=3.YQ5=Y: H8Q9\E?Y(G MUTA;>1#BF_[P^_)F$N@:\8H7K0[!U)\]7_"JTI%4/?XY!IWT]]0%3Z]?HO]F MS"LS#TSRA:C^*I?M^F:23M"2K]BN:K^(IW_QHZ%(QRM$)B#DO/B"*?T8D(!2HT.+MQ0E0 M/'][<>QQ0_OG04T\.A+OL^KJIN'O&K$O50NAAP-Z]U6JB[)^C_[8\H:U9?V( M;G6'*=N22_2?VP?9-JH'_0T]C^Y^(7P_/:QS_:GC>&J MH@A32Y6[JC",LJ17G54_ZJL?>=/D"R]$7915R>!3 M' 1)9F4/(*,))5;VN"J:IAA.GJ1WDKSB1#5/<4P=-8PCMA%-6_ZWSR65-"I5 MVH/YD?^S*[=Z4H"\)D[U\U]7J]M:R5= "B=Q:KD"5 $F,>PJZUUE7E=F:W12%V&KO5 MN,S+/5/#$]B"%)A:P8%T1;,S)0%G82Q1=-Q[I J"O")@/;2)< "H2.S,_H)K& M>&SNQP/&8#_']+FV98?11(/@) OM*0.0X=#F7T!$R&B2#0R#_1"C;#2[M\P7 M+E8D.*2V$U>E:"QU\LR5Q4D2C7@9& 6_ BE'+_Q96QE)+0 D:$!L'ZYJ2E+B M3'L@E8S-XP.58#^6]!V_X7M>[^#4GBP#(DL7. .:J5/ZE(],?&7B$ M^'ED6&57G(T\#^*2PQ2[70241;'=V0$923(R8F3 $.+'D,__SS*0N&B!*2&9 MC5J0+@B"R/$(Z#!)L[''-= *>856M,.5V:A:-6*CJ&7/Y5L,7A1(+AHMOU2T M\R8=@(3X@>1NUQ1KG?K?MQPD$*!D26PO"&%=FMIT"^NBL44A&1"%^!'ES%^7 M+V;?$S0%08A>2]B#%BB,@Y DMBU(2# )QSK\ "S$#RR?6+MKNEW!-Q@#:(4J M9\[3 G21ZK>.+4"G_HUV\ %9R&O(TJ\LM*V'G50"*4?75P3 ER0@V!FY %V& M0V>1!>EP$L0CJW@R0 SQ0TP_/N^Z#=ZW#UT KV0D#FT>@'1JT$TRQR(@#.,D M&'MV ]N0]+L&YU59L[IX@T,O,GWWX'S):/FEHITWZ8!9Q(]97_CV=/A2!+Q1 M'4/J312P)5U*"NPT<273D!)[2R*'="0(:0!G"1V(B_J)2W<$-<*? M>5.4DFN'8FLV%?3&]HOS5UU3EZBR-++W\ !5F-F;23D4BXYM$M&!SNCK=&:9 MWFPK<>"\LS68W5:L?NDO!]"MRU8IQO8$!:CB.+$7.8 J3.C(XH .E$:]R#*_ M8X?NU:+9LA2U'N749WTI%9HVHRNX8UPKZ0([AP&9/B!/Y9UK=-7KP5X4XHE:!78#(K/EG='K\!^4)!$ MSG(1BA=F\=BBF [01?W0Y37+U?=^FRXH$:RF#!N: 1W4'#D4[[PYSFT.X$7] MX'6_VVXK:2$:<%W" 3%78G9Y=698E(_NIX4!@8>!-E\^BGIH.XS)RS*P=;L[G)X:L3$ MD+A4E'L#=?YF)Z?'-KQY-*?P)#)O";IC6/VW_4F_6W.^S?K^([[*N_-Z0YCN M^. GUJ@Y1***KU3(X$.BZM-T)_*Z#ZW8FC-J#Z)MQ<95$.W+ M!WV#_ESD_']02P,$% @ W)A46 F\'NF0'P 6F( !@ !X;"]W;W)K MHPZRV;*BW07V2Z(F655OO?=5Y6_O.OO1 M;8SILT_;IG7?G6SZ?O?ULV>NV)AM[DZ[G6GQINKL-N_QTZZ?N9TU>O#L];>[?&UN3/]^=V7QZUF8I:RWIG5UUV;65-^=7)Q__>8E?<\?_*LV=R[Y M.Z.=K+KN(_UX5WYWT7Q%USC^;W:GWYZ=9,7@ M^FZK@P'!MF[E__DGQ<-#!CS7 <\9;EF(H7R;]_GK;VUWEUGZ&K/1'[Q5'@W@ MZI:(#Y7AR9[Q>[SMOZ MCYRHO\@NN]9U35WFP@QMF5U9XTS;RX.NRGZHV[PMZKS);O#0@/-ZE_WGQS@- \O2UV^6%^>YD1VO96W/R^F]_.?_B[)M[MO# YOG,O>&E?8>L=XN+FZ :JV6V,+D]4NR[,&HEZWZVQGN]NZ-)90 M533=4"Y)&DJ(\V[7[+-B PT SFPARH2ZC/9;%P93%+;#*MU@LW73K;"R-7U> M-UEK>A+9T^P7O,+TY5 X]O\(U;N,Y.[&JM![^CWQKI%MK9=P7^4->A2KX:^ MHU\,1,TOB+1-M\;KNG!95=NMR_HN*["IH:T+4)8_@> T^:JS]'NUSUR]Q035 MGG:Z 2'ZC=GK;OASM\DM@66VBZQN;['!SNX766<)(_Q!WF"O8*\\;'B+Y39Y MVYJP8_WI3K,/!KJC@4*RC)BP>Z+)&EBOAJ99*@JS;8=O%]G=!O-A]:(92JQ5 MMR7T@]TO/85Z4VS:#GO?,T0Y'N1;(I?YM#,6D_>;O,\Z$'I;_V$6V; #N$8P M!BW/J,"^TWG $:*$@-I_RU9FDS?5A%ZFS5>-B9\1L@$C+(0S8^; $FQ%V@*+ M>C B-L%IM\"-8!-J>MEO;#>L-PM@#TL9A1%<"A8J.M>#V* :V-(H'6YK5Z_J MIN[W"Z5)7[L*RT/V!\ &E&/UTC%3Y5@DWS9F0BG&56T XVGV!BSH"($C5?$K M4)07X*==WC*_%$&U0!RJH$5R M_3@+?0]%V;J>0/Y9C)UFL+FPJ&UV.5@+:NRS7VGR)I*@&MK" M,X/_!ELA::IT;& 81ZHL(I*W3PJC8-9MNB*9Y/3H[)BC5R!X*V#T]Z=(G8@$69&YH&U!3N> 58@L/#/:;66[[9@W2]-V"4MZ?E%*UT;V MKM+"G\AF%<8GBO:G"[)A_'JP?W:GI]E[$ XOOX>EVC(C7+%R8)#GM,B,RB ) MQTZ! FPWM;[@33:DQD^^R'X;RC5/),HQ=]").\$'&X9<>)"0#S@Z2]O(MT%' MX'NC$G3CBMB%D073 M#2W2%=Y<5GD-TY,W ^]G-U@(G!,&)G])Y KT8-,*4:Q)YWCD%$RZL8T$##![R,@'))3J%Q[F:X2'TB_1#0; -K!Z^F8[5 G0@A)P,E'Z5J%$^H-PM=[1(2MPQ07@>(<2DS\,/Z:W%+'OD]I8!ZA7(0Y M!)4$#,"#4Y>1S^=2W,Y26%G_,].25+;[5.;&=$HPSA@2E$]Y8^8#_:)>)\B0PH2B>A=2,L3H2 =+#8$[AN5;83MTKX<( (]WT#?(2) M_;)[_AHP+8AQR".!QL- F'(+;9&3\BE)L9@$EPU" MBY0SA(N/<]*88,)QIZE@B-F(>^5U*. +VA:-4<*GQET5TICL/,E$ M CTOSB@H; %\(OR03'W'FG5E1B*>4XQ=86I:V&GHI> MF)KG"7X;#.BN"TX&A-%I(#^/0UJ+#$T31"E$_A-5IM@VM^+>&(XB7;]@J8C< M]YD]/]8KN#%LI>&%2\J-8*2 ZW)3&S@+GTPQ4"(K^Z6J@!U+>2U6\K2)2_'* MR><___(;V#@>HVXP"80I6%#9-Y"X%9:4,EV)#:Z3A55"QT0G D:Q*>!=WVWZ?C=Q@#1 MZN^RZEZ)0W__7A?,:NV>A 9!)D2# (\!PB(9Z3T$@GH'-[QEF,FSE "UL]$1 M=J0V)%\PQLZ X$P&D.=!/(%9FCV+9-#E)?WB0(G@BA (84B-\0X5%\'RN*-) M%Q^5GU*^J\ 3&YC\$L(,D*YK]S%)=<%G[NV@*H%,Y*[KR7QSG.3UUJ 9E&1& M86"9TM*4K.E=[R-7'D^?Y&XC^1;Z@QQ5L('W9JL1&'4_:*S6)DY)94J-VO - MZWF*)MD_]#$/1,Y@6E;&XA[ Q/8:1UX>!2 P$WO21V"9^52&)0V&U/L!&F MD:Q'NV?NGR6 RAHE)O@-[([/MQG&'!LI85]KUCE+68 Y"E,"(#0;3"V;,6#8 MY959#Q@'B#%729$5#6#"4GI**>NYB/_X/N&BX_SE)2*5@DV]WC1[72ME5,%% M9^LUFZ@$2 SG)!6(TV9_/X-AWX-J[Y*A'XS.1)*S!2XI^#Q1"=4"-X&EY1DP+%^KJBG\PM[/2_"_RW>D2L>[*,VJ'^D1M:B<&UE3 MK-"*]B($\$-HPYUD7GEL7'.\+Q48*BT1'8_AY- /FDN>@-V*!A(!/(A#XC90 MKTM2Q&,ZD!%BT )/9S-^(^2 Z-=CZ&(.YT]F81Z1;X)HJZ.><#[V9P#-"JT*829D$4I M<''"%A(LTHOHT"9$)VS*DI \LD =)<')!*FJ7%K3:.*@Z(%^#L]UL(^8_+?L MX=TQ_=3[GH/9LUY4B"%7F4[^?T33'PBK_V*L_C,& H[C3!(53MLGZ20RIHD^ MJ.;G._AKGS3,3#BAI$"UTZQ. E=+ZL>0O)"B MH#TFD -B/)_ 8HJ /7+UNV:ZV_4P\G82@FF??6&-" M$%'Y[4GRU3(*2L:@4B[5Y-9\G7$IYXMOLI\8FG/^?7[^3?;[T)%@<+3L1#]S MA"AR*2&:).6*2'U2LFEZ:#SY\S#Y(3E$8-GN>4ADZ9@:>I(_G4#%U@K4;F D M9R%89$]6TT$V!!3!$!1;TWJY+9K0&R:!0&KU9!\E.5_PC["&!E/.1!\ M4CR5HNH2P07>EID&IQI^J#?=-",2>]:E3'?$"GFH0,6*G!F9*PV!V"%@)];: M3LK-)46LR03JJW'IF-$TK*#C? S&3#4 $M8 XQS-_31\$6@X)U3*KV'?X#JX M/*64?0-+SG!XFEFA^&QLP.8!^[EK[6-TUO$2PE1SM>D*:A1%4].#IFO7RX:) M(U,N0@K*AXPE)>80T>AG,RGF"Z^_KV-T='$DAJ.IA'XA'Q1TBCAM$I1T8&; M1^E@7T^G2-O'=:<^:J?R)5@[*:&VE#:AF'"PHCE7OEA!HD+94^YPZ"EX/CT* M)QO3TKM[P;*+O(X"16_^K-&<4%)NF*^XQ8Z MJ.PZZ/D5C2M"".H1KR=,YF< MF(7:]TZ4SXT&$#F1LNNZAHTW]DLRP\2>BZL%U<:-2B:'BH+DUWW%NFQ 6,3)"'$Y22 [BSQ/Q=5E<0+CE,LMR:ZE(_,M5Y9RKFINTI1_8[5 MVNBQ\8]3A3)-DB/.-I0?I*QUMVKJM<\J)D+&[C>ED;VT)5%425(%+R8TIZF; MSP].L[?WO4X=:_!2H5-*)P K'*"+FA.7U FF>C[6\"+3IA6JA83]K:@GH2," M7.JQ$C$)5C+8(UI_U^2%4,WW+G'#0E[NQ0OAO%]OVE*6TPKD+ 2J%&<( C&/UQ^B&#RF24H"I@%"+:\!=:)++945 MJXNZZC5]<)3]@HOED9A6 +7()84\&2L]E7V^)OW*R\X-Q#ZDVQ&L$!4O4K[@".:^+1Z?] 'L\AGN@!$KNU8< MM7M F.&2_QWN8(EWTL;I"_-AJ9Z"#3 M-?X@LZS NVHY.!-\6.\!3#\>A56$X"2W>-_'L]@X2-:ED/A.P^M?WL=&0Z>Y M>>\HTI0,/TD*P]^*P6SV4555J@0%*%: [/8?P#B>-QK;T/(D0X)_"7_+Q2XP MO\(!"3)LX6B\H6X+5/ ?WI"S<10JLST<.98>PA 736 *QC?N-K2PT&-N1B[( M[_&"KJ3/;,?FLD:+1UK7;22'D>'7LDTFV;98K?B#286G9,4<]!7>C&99J^30I M1R<:3Q3IP1=)+E*=,NE^(BEIS/1[H4**QL,2IDT3#R0)1M%E]:!"#QVS-FP*J3N0W2J5F,;MJ"U-#(2,%A=(A2WE59R@3R)^\3>SNZ$5JD$5.8ECGD\/)-R.C*>J84SU0 MLMB "T>3O'83JE%_#VGB!QRT")D#'SS-V]S/[(%%20,338PG/B)-=6A>3[,? M?2-/^".H9RG^CKL+)YT],WV$[%6D#80$TS3:POY#MJ-(6C,3>(@C>CD@(M@D M_LBEY:*S'\%1A6@CR6:NAKVQ2RK-DY.MH$SR&836@OV#/3R\-1O728J)S1;7 M95Q^2^UE:6&>%%5JXF<:*&=:)R4)028@-$U5XO9[:YIY]>R' M^A./[5 64;NW:=C26"6TUH@_ZVN,VL;3G=V;FF$-% %X8#[FYAC9OUR>GVDF MY>T,];-7\?V[*"M _4^D=']BST+Y]IT_Z"6$7N_7$.<:));QI_5$GWH5W<0+=6^Z7> M:S5QFK@CU%-\J!%=%MN\VW+:6)RD@1^A.'WSK"(6!BLF-A]&-8]Y2F^F6O5: M3VI=B^9B[%V'DRO6I,MJ*;VB++J;Z9V_TT1<+%DT>PUIUOPW*3]NG^\[;L._ M,TTSV=J=4:I+.R=G[!?:;BF'Q"0*I\XG?WQW8F/]X3.;;,EWB+"N9!5 & ,3 M[%PL6K]3[5R,NJ[]=A92(Y4?H0 22DB?F27I(DZS[PD_\+QAEK=S#>!)Z5C= M4__Y13C[TYG,U9(:&=%GI2#/#*HC/ MZU)Z0.F<+3 +4TM'@&5]VCJW/-J^Y19;;=V%W#?["(U'3#PHF62*TS*+5[?^ M-$(%,]&:JNY5W=P=.A]QCU)FZ^\Z,8.GV>7].[9)0DH+G,4H:4S*:2;1FI22 MTE"%0YKTV-UC&[-N&-4I$:08$:I6 >KH>4A\D_0F>0X6I/A\>X)KSPZA#TC+ M\5'^A A_#@G")E(=H;"!$PW^Z.&C$4)G69=O>-=4B<)KE6A^(>@HTAW7SWOE$+G,\0FB)>7F> M'%%_&;^^OKFX[^OQU->CJ8.XS'WZ=O2I 8=W>V/TTYA#:&#Z_9#O;ZZ2H^Z2 M3]%; %Z>G3_Y^%1'@Z4T!5*[T' 5\&O"8L"5"4=M.CEJDR33 TPE0@KN"9@) M4;S4NWZ:5?3,K_JEXNP7YQ[:B,(Z M],SSQO5.CU"L/70%=.%L]"/E(G] C7R@G204@U"(ET]Q?Y=4\I:A?!:0G:2 MR?U= ^G^4&L %R]J;OOP9V"F*55L9FDILS;)ILI CQ?H5-I+"E!,L@J2-2'I M28DM588KOOZ<%6Q. 64$]0$!\,ZS:@ ZHN#+8RW"$)8R[6'4%AY93Q)/*5_X MU9-A;&/IT$,96C"4!K4+V6A@_Y9][H54VSF!*CE>.0_A#Q\;N@O%N^]K:W3W M=(*#Y$<:-21_7E,#FZBX2*0N"I_"YP^B0*%S+9&51$_-S[[^X)U#,+V%;PC! MI\209.LXHB4IKM/&=DK64:X]K)MDFT,4S2S$4<7H$,AI=G4$>(K-DN/,$=Z% M< ^U$\*(6CA9%1"U[/-/OH^,-Z1NGG9^^MY0KNU_]>JOHU.$FE4* CR'(?IX M9=:U'"XCH6G9)^ 3K%-%I\9JA*[LU_W.9&_XP2)S0N%VX.0?W9&@_!.)*1G= M-I2J,,;L3%Z=.8@'?]$#ED_GNV:!]>.]&K4_*HW M0U'S" 1]4GVL)\8Z:=T;#YK*^F2%M+$GF=MW#G,")IF;"T44&@KKR)TG0>^[ MV-1QJ[EJT7>:BH\A+EW<=(O=IX6WA!&U)=AG<6D/ 6+R=E*;IIV&(_(P&:B3 M,-[94;N/RXK:W<<5;*\_1\CD,V&_6D[P[/5.G,DM(<*XG!70,UA[?N?2,Q2D M9=CSG7(6=USIC-'-$C-\Q4)&;^89.1N(N'^0!:%BT,YW4 ?EJ<[+N P!F%:: M]6+](?%[Z-))_*>D1Q,DW W^/;9AQSF(X)F3!3S2$.%]PX!AY0H:0BJ:ZTV%^ >:63TL\H\* M80^X$>H]IPK[#2<#922 M5-(6'W\9T$*3MFSJF_JCX2,'L+3DAS/-7">G+,@G4\UUB';1OR'W+47C":P^ M@1QKS0#U-\BR*VM)I74SO#!J/^(@2XXU\RX\9S-^I%&/'L^RA8A_ZF9-[PCR M!Q%#JN_87%+@])>C<&-_% #V8>/U(J.S_\R\ C\S59#!<57($R=4'>/KJ('] M4JH ;LF[8?N1C^XY6@BBTC7],6FI4(YVW'-6:V[/NQ4KBWA0.)A2#6,:4Y+O%M$.RX. MKH&8JSW.Z >?S.,*0"N#62QJ*A#UB)#K YM/Y=*E013F&Q8Y,,E-:[@Z2FE[2 36# M6 @5:SRY=I-<>$G?1Q('EX7=*ZCR)CD5+,F&=L_G:\/&V3+(CMS,57G12/OD MR&GVL^F]8;_"IF\X&T7#Y/3)O1.Z/@.$D'/^1:P. MT!&X94EPU+>^F5B=AE"H])EC[[O< W4X!$507=FN[09MX)037=P??94MCMPP]^37 M;@A\L)B<1G.9/U2]!VQ",$B M2<4< )9CLR2T"#D#.^I;*>-Q/;]\XA.%9R-?+.DFR6?[2>3X*IE,\5D(:,'& M%V=?+-2%(GZHU"69;TI11<0N%FED3R"-3Z!$2!^?AK0 73DM7>G^2S:&=,;7 M.E?/;<42=CXEVI%WM.$?^C)7^ US\.(:\]O'V(SCS MQ?+L[]EB'',H0W[Y\HP8\EUZY 2:,WX*M>$O@Z3J82&]:(K<^UF,R]=[?YLD M%+KOQ?-GN!,W(S"!=Z^9+[&A1H^7]/Y./U\$]XGN\665^)6OU^00B<,1[[U* MVC /=??"/UL9NCET%(+YXZ1)4$9EQA&GO60OEN1&6O(I;HV78_4C+A0G:-:@ M@M[]V[#HXQ4KTYU_-$OTZ7D_EAZ;$ M#XV(CR-^\*5/3]Y_2]C_0S+- MW13_++GO'\I\S?^J ;OH;2]7_X>GF?^'$R[DWPN(G\N_NO!/N&-TYTIC*@P] M._WRU8F%]UL./Z@Q8(_YS$Z_\&4$L# M!!0 ( -R85%BIN34=-P< )H3 9 >&PO=V]R:W-H965TW51<\5P>MO8!(B$) M&8I@ -"R]^OW-"!1E"U/9C;9?;%) -WH/GWZ(IZMM?ELEU(Z>EP5I3WO+)VK M3OM]FRWE2MB>KF2)G;DV*^'P:A9]6QDI&;+U:"?-T)0N]/N_$G>W"KVJQ=+S0OSBKQ$+>2_>ANC-XZS=:4V/^\,V"!9R,RQ!H%_#_): M%@4K@AF_;W1VFBM9L/V\U?Z#]QV^S(25U[KXI'*W/.],.Y3+N:@+]ZM>_R0W M_HQ87Z8+Z__2.IP=#3N4U=;IU488%JQ4&?Z+QPT.+8'IX!6!9".0>+O#1=[* M=\*)BS.CUV3X-+3Q@W?52\,X57)0[IW!KH*?L&)8>/$\$O:OSY:_X4:>G][0W_'NE./ M=#.?2Y\O="\K)UDYN:4DY+QU@%25"Y+8=D^D MUZ4T=JDJ4J63 ,19/MV^ZB==>(FKWL<>=3NMKKXQ^4#GL@+RM MJZIXHFR)JD.Y6B@G"O7O$%-59D7M)6[>W?H(RS>J?- JXS6++--UZ=@QU&>O6+2(C#-4:DR$(P6P$% 8:V:%;B34\@&1,4C97I5Z1(X 96V&XX$0^^\ MH9<[3SXU,9'YP9 >T&S;?YENUKDH=I@(O-#>&P(N4,=<",A$/ZY$KQP(")- MEN)L@5.J@!G2\GZ]PCHWM!SPLF9E"/F)2'O;!5X?1%'[P]L(M3W)<2Y W(J MMR,T>,39>J'#2K<:O]+03=H\-^"4NIXBNK:0M,=[=1P-4=)-<_L/?/M'OGWC MT67^&QJLY]*WB%US0E9"Y71$DS0:C:9X0.8GU5270RC6D, MV30:#P=T^X(F]_7,9D9Q,? )SNT -=M2/(WB:4IQ',7IA)*3*$T&*!P/F.4J M)JG,EJ4N].*)XB2*DX2ZPRB9G!S3))H.4[JNC6%TVXYV8<1@?$S=)$V.^6V: M3H^A0FDNN-HF,3'C?O;]^9@*S%;ZD/5Q.$X9NUQ-!E-\!_FC&'5 M>XT^\6WQ .[H>.DHQ<,H&@XYULDTF@YB^G%;6; SB)+!" ]=?^:8HS7DN[\M M/VHKYW4!.QZPQ=5#BFQ7^U_D=Q3VX<1ZJ?B@8=VSW_:KK0_G:8N/'\(M_U!S M^7KDI[T!<<6UA\,];K8#U=KY<\F# S?_VU"\?>&6/!:^[#E^EE@*E*# V':E MW*K!U( 1>].\!3SC(#ZKC<#@*.Z-METV"OF)\]P]>V'&:P5U+?>Z&C=(1<$@-N]HT&K[T'2H\(6*B0Z&R64SS#!&&;3Q1ZQUO/.+IXQ6E]!-?^NU9K9?,J<9Y:$'.?D+!K9K46(*$^6F8=SRWGLC M'S;[>Q/;SR+-1- MLCL>OEK]+,Q"X<=S(><0'?0FHPZ9\"4HO#A=^:\O,^U )?^X!.FDX0/8GVOM MMB]\0?,Y[N(_4$L#!!0 ( -R85%@H5@F7:0< /(1 9 >&PO=V]R M:W-H965T]]?W7%*2Y;$S*/K0%YLB>;_.O?>0TNW!V#_< M3@C/GBNEW=UHYWW]?C)QQ4Y4W(U-+316-L96W./1;B>NMH*70:A2DVF:+B85 MEWIT?QOFOMC[6]-X);7X8IEKJHK;XZ-0YG WRD;=Q)/<[CQ-3.YO:[X57X7_ M:_W%XFG2:REE);231C,K-G>CA^S]8T[[PX:_27%P@S&C2-;&_$$/'\N[44H. M"24*3QHX_O;B@U"*%,&-?[4Z1[U)$AR..^V_A]@1RYH[\<&H[[+TN[O1:L1* ML>&-\D_F\!?1QC,G?851+ORR0]R;+T>L:)PW52L,#RJIXS]_;G$8"*S2'PA, M6X%I\#L:"E[^QCV_O[7FP"SMAC8:A%"#-)R3FI+RU5NL2LCY^R>Q%[H1MQ,/ M930U*5K!QR@X_8%@-F6?C/8[Q_ZD2U&>*YC B]Z5:>?*X_15C;^)8LQF6<*F MZ73VBKY9']HLZ)N]'AK;6%.Q#_#5H@0 K]^Q#P%88=D_'M8NS/_S&@)1?WY= M/[7+>U?S0MR-T ].V+T8W?_\4[9(?WW%^[SW/G]-^VN)^:\$V7>!ZK0H>68: MB_X)LRZBX7> Q2ATI-3;;HT!"<$K]Y[]77 ;T\J0%%&M@10EYA>I(6H:QW7I MWH8\T<^4?C+V)(K&VH%":/J]41NI%+K8LSK^;8NSC9Y%8$5'EE&L3J=]P39Q'YN+!0&! 9$L(# M&1U$D"C:JFRX4D<&5)D2VS &8-(K),";A'$' :7H?V #.L1S#0/8 TV*;"4, M*1+/Q8[K+:784KX<4HOJE(5PXVMX728N>NL\,QO,=:NN6;O"RIHB: NI:!O) MQ8@;+Y7\=ZRX0>J34W:3$&7,IFOJ&J'"63A=<8U#(!1*;4W9 + MZ]>8=&PK-/ DM."CV6I8+ADQ/0/*?*T$\37VF;VP70XB"7AA*[866ZDU!69T M6"ZY%S$.\K^%C Q5O 3J>RY5T JX@[8V]C'[C.V=;A<9)O;<"UP'<%'V3^N( M7W/?6)$,@T(.:3$ 71'78A*VN=:HEPCD:3>G;C[S*Y0%UX50Y\$3F%P3:-Q1 M*9*[LY1VWZ3 X.A^_FDUS9:_,FV0,3%FWV054-JP-1**H6-[;B7*9'T\62-W MZ+G'^%B+,$FA"ADRCCAYN2>?&)P@RYB91:NDG_SL<%\+,EH+2SFV7%P(D?I26HO:#*AHM'SXEE484Q@ M('I62E @F(%K 5:.T^=].6:X5[UCD.G5?1WJ % .'"(WL@C. M"E[LR*#N;DVG!.]X6]N8TN0YOT!J +V./*%W-" MS7*B#7-&&AU/A>#*F 2T_%Y2 Z)FG<<"5Y37/5<-BO,330.9<[4AQZ]6(V=@X/N9DZ"CP J M!Y]M&FIMU%!!K+YO.>9@&E6& ->(G=KC(-T%S6!CGX!&4PU3Y87S05C4K]0= M&[4UE72GQ+!4#NC;SA3<0#E"E&^)=YL:P?1-VP8Y9@\.]%SLDHN*LT(!D1(B MKFTTW(%%5!B6>R:.)'P<4EIDXH,)34G=N),H-QD=%@"]"KK13=*4H5KBCF$: M NX0"7NOHMK:G)[T'2'_L^*8V-B2T?>RCZ9I520[:(X$0 M.I4-(!_ \C_\->J(\2P6N-EF^ M8!DN0?,EG> =ZL--OV2+9)Y/WV( G=GR[X5\U.M@E JE5+1ZB* MK+8Y07-16FLQ3'S+ZWV>*2%$HK'L?[Q_1U3Q[*-3X7JDN'/H(JHMM"65+5TF M#N@5T59YI.!27!, ';UKA< 3ETQY9:JV*$$KU7%(NNCO#1HOGA%G#.6I9I$\ M&A<"=40=3]44:[!OJT%!QVN,Z4@^6)7NZFGULJ':@R_(#6XG+?W@A/S^_S_< MS@^@85B#X]@1]47>"OX9-+$DG\K&MKJ(P5^$/T8SM077W0,_QBH)N\1EOU&# MA2-^R$*M* R\F2_'.3S&'0:1AG,R7J4=D:)JRL"GEPP W%^:F8ZOO>)-!N_A M8*)M^-I YPELQ%?R?K;_H/$0W^-/V^/7D$_< B('(#803 MZM?&@_;"<"=P3[6T >L;8WSW0 ;ZSSSW_P%02P,$% @ W)A46 RL&UB# M @ J@4 !D !X;"]W;W)K&ULC51M;YLP$/XK M)S9-K80*."\D68*4M)O:#Y6J=B^:IGUPX A6P6:V*>U^_6R3T*Q+HWX!W_F> MYY[CN)NW0MZK E'#8U5RM? *K>M9$*BTP(JJ,U$C-S>YD!75QI2;0-42:>9 M51F0,!P'%67<2^;.=R.3N6ATR3C>2%!-55'YM,)2M LO\G:.6[8IM'4$R;RF M&[Q#_;6^D<8*>I:,5<@5$QPDY@MO&&6PE:R'NK7&5+;S0 M"L(24VT9J'D]X#F6I24R,GYO.;T^I07NGW?LGUWMII8U57@NRN\LT\7"FWB0 M84Z;4M^*]A*W]8PL7RI*Y9[0=K%D[$':*"VJ+=@HJ!COWO1Q^QWV )/P%0#9 M HC3W25R*B^HILER S%1-4UQX9@(4R@?TD@_O MHG'X\8C082]T>(S]#:TXBC^L[D7U7PJT_VSG2IW+S0733]!28RC(16DF5,<\8W(')XLC3O M(0[]*)Z:PVCJQR2$*YXV3L4+.9.I'YJ?*B;^*)S"LA)2LS__AYW$8W\XC$[A M9$S\/F='GNWEG1 _'H7/ @XU*MB;GPKEQFT)93(U7'>CU'O[1;3LYN\Y MO-MBUU2:VA64F!MH>!://)#=9N@,+6HWC6NAS6R[8V&6*4H;8.YS(?3.L GZ M]9S\!5!+ P04 " #B>ZF24# F!P &0 'AL+W=OAN95B,O/*B6$8OC<51ST02KA?==Z]5"=5:*!J\U MF*ZNN?YQ@5+MET$2W#D^B&UEG2-:+5J^Q8]H/[77FJQH8"E$C8T1J@&-Y3(X M3^87F8OW 9\%[LW1&%PF&Z5NG/&N6 :Q$X02<^L8./UVN$8I'1')^'[@#(8E M'?!X?,?^VN=.N6RXP;627T1AJV4P#:# DG?2?E#[MWC(9^3X'?3@"3.-' .P 8%YWOY!7>B+V"%'" MX$HUMC+PJBFPN$\0D:I!&KN3=L%.,EYB?@9I$@*+67J"+QU233U?^O=4+X7) MI7+9&OAZOC%6T^WX]E#2/67V,*6KF+EI>8[+@$K"H-YAL'KV)!G'+T\(S@;! MV2GV?SF;DT0/RWR$'=;<5(#?.['CTCMX4X!H=FBL#PB!&ZA[1 '<0NF(=I[( ME1F5:MYI+9JM*Q=!\;FB&C:6HE4)MD(HE:1F0!%SH$/&>H-Z.&CW87 D[CWN M4,)YK;05/XECK8R%3PUU(.GM-]1Y##Q_KXQ!\R*$ACK9$?R_@<]%0V)59RA_ M\^*/;9F[ZXX_J!;U#0'+CJ(.6A-X"LDX"5F:TNC9DRE+V,M[ODD:IN/IOTAGTO RR:3@=QS">99#-PM&(?EG(6 ;I9.2&H]F,%+.$ MV&3&-XJ":BH]Y%:K:^0QNZ,UUC^S8V>(=' MX+SO?;_#^Q>$TMRZ(Y58$C0^FXP"T'U7[@VK6M\)-\I27_7#BAXRU"Z YDNE M[)WA%AB>QM4O4$L#!!0 ( -R85%CF_45OX0( 'D& 9 >&PO=V]R M:W-H965TWB)(I,46'-S*%:H"3/3.F:65KJ>606&EGIDVH1)7%\%-6,RV R\GO7>C)2 MC15(OVQ^):TRKJ4$I>HS1< M2= X&P=GO9-IYN)]P$^.*[,U!Z+2[+<1 [0BBPL Z!D5GB.0KA@(C& MPQHSZ(YTB=OS#?H7KYVTY,S@N1)WO+35.!@&4.*,-<+>J-577.OI.[Q"">-' M6+6Q"047C;&J7B<3@YK+UK+']3UL)0SC=Q*2=4+B>;<'>987S++)2*L5:!=- M:&[BI?IL(L>E*\JMU>3EE&M-D)^(%%H>0]D)(XB3=@9=VQO'/943LV %C@-Z"P;U$H/)WH?> M47RZ@V76LMWS\D;I]"X+(0#16:)K1; MJ$9:0R]U<\4A2+0AK!CE& )RF.8$?B'3[0<"5%ZL<]2^Q/N$8BO5&"9+<^ K M[H;$#3V8,N'XA)#CG$O)Y1S4#)XLEI9X?'STI1EB\T MIDG\2NM;7UNTU0YJU'/?]!P7JD_;&;K=KJ^>M>WD.;QMRE=,TVT;$#BCU/AP MT ] MXVN75BU\,TE5Y9:E9]6]&] [0+(/U/*;A;N@.YO,_D+4$L#!!0 ( M -R85%@ZN3_ )@, $D' 9 >&PO=V]R:W-H965T?Q&;K_$&TG'=\@Y_1_=&M#.VB THM6E16: 4&FT5PS68WF=W0TL'S#'5_.C=Z!\=J$YH4AU,&:R GEB_+9 M&;H59.>6*T/U->X!N*KA[;=>=)1Q%\*OZ.:1(P=>+:KV8#37(6\0U65Y"R$)(X2<_@I8=PTP$O_8]P0UA)KMSS MJ.'OZ[5UAOXH_YR*?43.3B/[YIG9CE>X"*@[+)H[#)8__\2*^/49WMF!=W8. M_?^6Z2S8::IG/,"S.WRZ4W17:6I0Z[ &W8#;(C1:4J<+M9D!50_;-9JA@I=" MT;WN+8'85T-!_9+ >^70*"[E [73'8V)CL"L;MR.&X0+*.(PG18D9--P.LW@ M5K==3R9/3"#-PBQ.("5-%L,'I#;=:EF#:#NC[]#K6&!YF)838$68IPQ^:QI1 MX1&&CZWIC1*N)[D.PE+5I![:VN7'2'4X/[\3U.!Z?U,='YB,W&Z$L M2&S(-+Z:Y &8<7"/&Z>[85BNM:/1.XA;>NO0> 6Z;[1VCQOOX/!Z+O\%4$L# M!!0 ( -R85%A2#_) 3P0 #D* 9 >&PO=V]R:W-H965T]:J?#6 M@.V[3IBG:VSU=A+Q:#]Q)U=KYR=&T_%&K/ >W2^;6T.CT<'*0G:HK-0*#"XG MT8Q?76=^?]CPJ\2M?2&#CV2N]6<_>+^81+$'A"TVSEL0]'G -]BVWA#!^+*S M&1U<>L67\M[Z3R%VBF4N++[1[2>Y<.M)5$6PP*7H6W>GM^]P%T_N[36ZM>$? MML/>/(V@Z:W3W4Z9$'12#5_QN./AA4(5?T4AV2DD ??@**"\$4Y,QT9OP?C= M9,T+(=2@3>"D\DFY=X96)>FYZ5NM%UO9MB#4 MXK)]1*SEN$F;7H+(.?T8U' MCASY[:-F9_1Z,)I\Q2A/X(-6;FWA1[7 Q6L#(T)X@)GL85XG)RW>8',)*6>0 MQ$EZPEYZ"#L-]M)O"AMNI&U:;7N#\/ML;IVAXOGC& ^#E^RX%W^@KNQ&-#B) MZ,18- \83;__CA?Q#R=BR XQ9*>L?VOJ3AH]#OE?>(+#GH]K',Z:=$\@%:SV M"UMA@7Y+W5(GL%?P&PHS% A0>K&;HPDI/B ..Q2^!J@'N<'DQN@'Z?N1:&'3FV9-_8#, M-[I7SF,2G9<@8[SDSYB16'M&FV0U+1='JN[%C-@QJXC9AF!+ZS 8<<3NP"#Y MNWI-7&#J_ Q>\_?6:.)@UC1]UU-\9&8?NT_;I]"V:'+V@(:ZL(^:6KD/9M9I MX^2? R6W:*1>P'T_MXV1WJ/!@2V[EAOKLQ#G+"':SN \35A/4%6L2JC 'C.BJ*^H)!R2%.6537DE_%. MD_SD&8N)7O*3E:PL"N^'LSBM XB2I5E&KOC!U6N&DO^/H2IF/ [ DX0E>>Z! MGU.E^&]>LJ+T%%4G*8I9P6,XKUF=9A? (:6)LB1^LF=^DIB5G._RP*MZYR;V MWZIB:9Z0F_W^5R'@(]WU5-%49_+OM?B?CF_@G?[X<7\$NF"<%U[@E-(J9)+Q MI C=!*V37^)PNE>CJ!XIBM0+IG31^)0;X.X9]0?;5R7X3FB*Y(H*DM5Y[9'2JVCIB ;2JGD*'[4CE'O,+\$^%^JQ>V#T MXCKOT*S"H\5"Z#+#S7Z8/;R+9L-SX'G[\*CZ( SU2PLM+DDUOBSS",SP4!D& M3F_"XV"N'3TU@KBFMQT:OX'6EUJ[_< [.+P6IW\!4$L#!!0 ( -R85%BN MI=3-R@4 #H- 9 >&PO=V]R:W-H965T-[2 :TOR/4L").FBQH.D%P[ '6J(LHI2HDI2=_/M]AY0=-VFS M;GN12.K<+]^A3G?&?G25E)YN:]VXLT'E?7LR'KN\DK5P(]/*!E]*8VOAL;6; ML6NM%$5@JO4X2Y+YN!:J&9R?AK-K>WYJ.J]5(Z\MN:ZNA;V[E-KLS@;I8'_P M1FTJSP?C\]-6;.2-]._::XO=^""E4+5LG#(-65F>#2[2D\LITP>"]TKNW-&: MV).U,1]Y\VMQ-DC8(*EE[EF"P&LKKZ36+ AF?.IE#@XJF?%XO9?^<_ =OJR% MDU=&?U"%K\X&RP$5LA2=]F_,[A?9^S-C>;G1+CQI%VEGV8#RSGE3]\RPH%9- M?(O;/@Y'#,OD*PQ9SY %NZ.B8.4KX<7YJ34[LDP-:;P(K@9N&*<:3LJ-M_BJ MP.?/KTQ=*X\H>T>B*>C*-%XU&]GD2KK3L8<*)ASGO;C+*"[[BK@TH]>04#GZ MJ2ED\;F ,6P[&)CM#;S,GI3X2N8CFJ1#RI)L\H2\R<'A29 W^2\.TROE;%VWJ)J_OI2&**2Z9>5<">=N%;D\FR 5G'2;N7@_(?OTGGRXQ,N3 \N M3)^2_N]S]C_$T6\2->_H@R2!H,AF@U8M2*&?2/,G$ALK)7,3((),9U&VUO*^ M DA\ZH3UTCK2)A<^C6Y&(0^J@?A&L(U" MQ_BQN=&=W-2M:4+.3-E+A]] 2PXA(@0?2Z.!N>Z$_H 3L2$)[23K-91S2SV' MV;XRG8,Z]R)T&#\R?J3T>ROA)BJA%Y\;Y^D9388IR/B=+!?]>T7OA55BK>4Q M[62X6*1XSA9S/.?S!-3SX7(U#>_Y?!+>B^F*;KJVU2&#\#07KJ(2EB,"<>K$ M :!#_2!9.I;D#BX>>_EMKEVQ]%:H(N18U*;C&*HFUUT1$\E)J*$"(!!JZA!? M#0_W";L/SL%8MHY8HX2FAS-\:SD!OV";T],&L%))G*0#50;>JVR["(3@EFN7Y M*LM>]/Q/)?T9RTFR%5UW%G6"K\?X#:2I$%+@-(L-X@TYV8H0UL8T.9>&#IUZ M0$T7 8LAI0M:43-68/AU.?LQ) !QT?'U2?D[Y8ZV &!C7:AZGI@JEPR(UG2; M*N1@]$0IW!=>NP]+_F"L(BBD+]"^/GK($#8$I-*9JD&[^WAJG@BS#.7*X*H=Y MU1''X"+>A^_)XU_%:V$W"K'2L@1K M,EK,!F3C33UNO&G#[7AM/(HY+/G>(BT3X'MIC-]O6,'A=^G\;U!+ P04 M" #[]^E)2X#I86^Q)3%)^'I$B)F>^D>M %HH&GJJSU(BB,:2["4&<%5EP/98,U M[6RDJKBAI=J&NE'(

JRI!%T3BLN*B#Y=SI;M5R+EM3BAIO%>BVJKAZOL)2 M[A9!'!P4=V);&*L(E_.&;_$>S=?F5M$J[%AR46&MA:Q!X681K.*+J]3:.X-O M G>Z)X/-9"WE@UW\EB^"R :$)6;&,G#Z/.)[+$M+1&%\WW,&G4L+[,L']@\N M=\IES36^E^6?(C?%(I@&D..&MZ6YD[N/N,]G9/DR66KW"SMOR\ACUFHCJSV8 MUI6H_9<_[<^A!YA&KP#8'L!FX$1MBW)O M%.T*PIGEO9'90R'+')7^"6Z^M\(\ST-#S'8_S/8L5YZ%O<(2,_@L:U-HN*ES MS(\)0@JIBXL=XKIB;S)>8S:$)!X BUCR!E_2Y9DXON05/I\9_+U::Z.H%?XY ME:2G2$]3V.MQH1N>X2*@_M>H'C%8GK^+Q]'E&P&F78#I6^S_NQ!OLIR.L4]] M_F[*XLGEW@'<%UPAW&'3JJR@YH9;);>*5_![2]TNNZM9]S7C67GII6_SE;CSOR]$C9\S4=H'7TH37M,8)%\:PKR1?YZ'-VVMZ* MQ7 &HV@011$);#88QU;#HD$R)<-PY6U.\)!VU6[IE;$R.W"DL\%LQF!Z@+(. MVC?^U);/5DH/,.90%G,&Z8144_B#:JI=OKTNZ.JZ?H8&E9 Y[&Q;]6KW%W+E MGY+C2A_5= #XE&%CO ??,\2W=\@KV=:&"N^ZPT7L\OW2.C9JN#U,]>KH;@>[ MA&0<#R;I".+)>!!'B:_9L6DFZ2#..@2EG Q8//+GGB81U185C37J:9&A"ZP/ M]T'V\7$\&Z9C)XR'40RGWI2P]]!7J+9NG&F*A5+U;WZG[2;FR@^*%W,_;C]S MM16UAA(W!(V&DU$ RH\POS"R<6-C+0T-(2<6-/5160/:WTAI#@OKH/L?L?P7 M4$L#!!0 ( -R85%BS&PO=V]R:W-H965T2DJS$23RS,Q]L219YWX]SZ;<[I6_;C1"&?:NKIGTWVQBS M?7UQT2XWHN:MK[:BP9N5TC4W>-3KBW:K!2_MIKJZB((@NZBY;&:7;^UOU_KR MK>I,)1MQK5G;U377^_>B4KMWLW V_/!9KC>&?KBX?+OE:W$CS)?MM<;3Q4BE ME+5H6JD:IL7JW>PJ?/T^H?5VP6]2[-K)/2--%DK=TL,OY;M90 *)2BP-4>"X MW(D?1%41(8CQM:"NQSUS>&+6\/7\/O4KV@ZKA MZY:3N=Y>&%"G-1?+GM)[1REZ@E(8L5]58S8M^]B4HKQ/X )BC;)%@VSOHV_)2N&ZY%K^LUWR.T#+O2FC=K8>__?;5HC4:< M_.^O\H ML4^=9N)K)\V>+:>_;RO>M&RKU9TL!4,58&8CV!I6,TRMF&R6,!T2B_&F9(UJ MOG:\DBL)\BVQ8FI+9%J/\9;MD'QT52"AW?OSA16%[[@N6Z)6=:5LUNSZY@OV M?+ZYLM]T3_0_V#NCF*BWE=H+@2?P/!\>62DUTEWIUBYW?)9@CQR%P)!@HT9= MR$ER*5JBU[4^^QTZ5.WA/6_8QYOK:TLI"<)7MV>]2J@%RXV5HI)KN:@$VW)M MY%)NB8TO&=8\8WN!7.O\(.S:1.O;=">>1K=!2E=9!NXTD^?#C:!>["=[5V&*.3 "[0YSEAC)A=+&3 MX=X#>-@V )_W_#S:)[;&[NHU(E85=(07P4H+ ZZ47^>CN4;O@38W;,,1/HTR M;(TX:H@?]![%Q0N(Z/5:/= >99V4.=>H?61)O!XMXC8.AMGB6]\7R&=7AJ'( MB'J!+4.AH;U:(%;Q%49^CJI;5>2PELH' NN.RXJ3&J2S>2SFU/AL$-^\*I22\1!28XA52B$525+^UMK<"'Y6TI (J+%AMKD'3D2SX)R M;*5 9->^9O\27+N2?%_75Y:VZEK$=WOF5,=71%\A:D-K\UL+N*2#VM^Q,/#" M;(Z;PLN*!-?,R[. ?8*!G;='_]_P2K@,1*._%?;EW,OSA.5>.@^P,4H*]AEE MDFOXE!:6X%.IK:W#N0=(P5(OBQ.6>#%X_20:,*GL2EZB#4HJU+;LA(479RD+ M0R^9AU;&(H)L2>JE08&;./;B.4D=@32%20)F,2SU2$6+O#0.:%%$BXHB?\Z. M5S;ZCK+'&]('QOHNC?Q@3!^L[II)[IXLC"ZIU'-]:5(5:-?2N/*V$(\4"8E8 ME-6>4>005#NGUCBM&1PY3R]$>8Z"I %)A]H!T2,_87OX?$AAA+USXG!=NQ % M@SM!J4,45R2\W461Z[%N"UGH-1+"&HIM5$5*0H2Q]O7A8)#;:X\S/ M0_8328#M:>Q%2)\P2/TT9A^_";V4%"VO8B1'G!=G+ [\,&" YRLA:<>KP@N* M\(QEA9]%I]B&+,M1RM* )8F?9P>VR#;D01A%?CJ?L@TS5*-YC*R>^Q!VPC;W MYO/@C,T1)<4IMA$81%XVSW'UD6D#VR3RHA#9C*3)BBG;* 7;%&SCPL_3*=O8 MR^/\#)+._20^Q3=F<9)Y!?@7@1_ .BOK;J,,"JN:[!W*TV,T/!;X\9C2MD<* M)REU1((IXAXM*MB3!2/M#2\G^<:&?.N7#D&,>/\NR_T@IT1T2>!:P/%.='1, MH,02O=*">.!0!B1JJ<1^.&0O26BL+ N:2)E%Z]1+>5E*$@[;9..F73=X5KPO M*^I!-OS1-C""I(,62"]^U!U^'/$>R3R8BNH%R-LFD67N.L]LLZ#6\ NTE6C^ MR^.=8HPAB!1%.0O1L8.4*G@>QL_MG+HPGGL)ZGT2(&8CEJ%WQ^F8XF.E/ MB983BNLQN7QTO"3TT9EB?(?6(8?=ML@=JN!AHXLUE,[:ND.Y6FG1,G;T,*RU MH!._OZ\XFLO-$O652+KB14%%"VI5"IJSC0/)KH;1BZ/ZS]NVJT_Y^H$7_T$Q M1_ZW 7?&$A^]&$F3H(/\I@@85U1 XSE[B8RFKQ1?'R0!G-T_2S;V_.5)D0/JVCJ-)I,D/A 3"_1I5*Z!%2X7K+K"5RWLR_[TDA# Y6@ M7F&[I6MF]G>;6E=V$.NG+;$26C]8]$O3%P+2V*VS:N_$Z"K@EV&@LT9>"FTX M)037:V'N31$5P3Z7E:T8-I&DL%T#4@X>V+Y)V4<3*V_VUAKYF[8O7C;8^DX* M=-_IAEH3H07>SSL M-N%0VSZ[*/3J-?1@H1^(49F;2Q<& *QQ_P8AML>.O4CW@.FH-J# MI4?FHB>!SN.T/!!80S8DC$W"W4;8\9E6.QA/(KD:2>P(A[5VT.>M750!?51R MHQQ@>G3;0MC\$W:*=-NY(6V@9>WF#^''O&F4#8$G&PG9*L25@E&N49M$Y;TR)N-.;%L-@Q?<0S=+9FJG91PF[+7$R(W[E*],' M*U51+!C.-OK3G:L!N=+43NH-)TR'3_47)0!\X%7(+2>"1UUBO!8]::%)AP+36>; M[.%8S)6N0[H\48C&([0]:NM"B*8WB4=IK.\S!I3U\"D-W^)3E MA((3FH$92QJV':6;'P^&#O:+K6T[&"Q"&;VG;A MCB9L^2+K/.9H_P&PM08[X-?QU'?2)\>AYV'U'3K70JQE8Z490/(*"(V>^X.* M P ^8(F_ \,"4(Z?*8;-@#*3B#!L]'=@V#E1"7U,*H1AX;>7C_UW&ULC5AK;]LV M%/TKA)<-#J#*>MI2E@1(FVXKL+5%TFT8AGV@)3KF*HD:2<7Q?OW.I63';FUG M0"-+Y'V<^R9[N5+ZLUD*8=E3737F:K2TMKV83$RQ%#4WOFI%@YV%TC6W^-0/ M$]-JP4O'5%>3* BFDYK+9G1]Z=8^ZNM+U=E*-N*C9J:K:Z[7KT6E5E>C<+19 MN),/2TL+D^O+EC^(>V%_;3]J?$VV4DI9B\9(U3 M%E>CF_#B=4+TCN W*59F MYYV1)7.E/M/'N_)J%! @48G"D@2.GT?Q1E05"0*,?P:9HZU*8MQ]WTC_P=D. M6^;J^EV6=GDURD:L% O>5?9.K7X2@STIR2M49=R3K7K:.!ZQHC-6U0,S M$-2RZ7_YT^"''88L.,(0#0R1P]TK77EUJMF"9J2*,79ZKC!CC94%#N MK<:N!)^]?M<4JA;L$W\2YG)B(9'6)\7 _;KGCHYPAQ'[135V:=C;IA3EOH ) MH&SQ1!L\KZ.3$F]%X;,X]%@41/$)>?'6OMC)BU^TC]U*4U3*=%JP/V_FQFID MQ%^';.XE)HY)3T%^/Q_[G9 MATZS5JM'Z0H(]8(3ZBG@OM8C26#;A49WA3FG,7,GI$] C9FTYK\+,?1"DTK]@9EKUPFN$E MC+TL"^G%2].KD5/DZ])$K/V3CRTC@X)V%Y,@@>QSE6QK,TQ#/+SK=RQWF,KW&:Y'C&$;:! M*/=F<4XO4R^$OC.6>7F2.&\^^X^))[1%(U@I%T "( NM:N="7JL.7G,.["QV MYFO&V[9:DU>)X%?_WF>+ ?>.2$U8K4+,!'T..X@21_EX9+X(A5-I MX(S.*KT^JCP*_8!]^\4/<@K='J:.2]&_G0]XR" R^^)9OMC+,8\UPJ'>*'2> M@\,*RU(?L?:G^$M==6(T?.*SWV[EG:-\/A3A"?Q9WB&D8^(O5=D<0>* M>26;,@Q3,),O:C)@><($Y2 M;S9-69QZ>3!E/PN#&#SRJNO-YA05WA3"=:C$99R7S9 _GQ3 N4(Y(?R,)3': M([6C./&".#X8N%W7;/<+99R ,;KO=!91CQO##=,<5>7.8*_4XE5GQ$85X

%,T_HS:0A' &N-\?\=HN%\S-D$@S9_@,/1T8;UR%?=4Q/5016_*R;UO[ MJ;^?[^ ^BS(_QY&LJC;C=:^Q$XRVTZTRU ?/T,3V:/MFN4]$SCW+_6R/<#&T MI%U2G[U;L$99UEGI\MIS<^$ SA4D45E)-(>YL"LA&K(T<;JB()[V.@YB/D"? MQ"?!.VV$:]!X'/_]<"B/LV@SU9SWWC56Z 90[E# 32?8&U4*]B :PE>M:4J0 M &C#OZ8#825K5+<3IIJ= 4QB7PRC77(+;Z,(8"WKJ%EA *O% I5 B/E.YU\M MX0N.X1+_M,(KT ]KV?BM?8FX )]IN/\[4"B:8I6S]X\D'"[_(JF$, M;.+SHCT<3C?=_&\:L#!DU\O/?D*P('>UE.B5*TJ+2L+9[&R*L;E1O)LW7>,< M4W;BA$R?FKC2)8!5:^_%X06Q6L"/=#X:S@@4NJ/"?Q=?VK9WEOVJ^B@;'[F6 MF'A#MM**[+.+9(+F[PY'WU(6^RJ>RGRM /'%-?HLSG,0K M[:\QE,S&>>26 T$DB7??\;K]_O;P>"4"\D]?[T.V]R[;)T2^]0J-I0C2W;W/ MT.'T)_Q#=Y3)SOVQ1C:[6S*=8%%'_55RN[J]B-_T]\]G\OX6_PO7#Q*>J,0" MK#@5I2.F^YMQ_V%5ZVZC9M\+ " ,!@ &0 'AL+W=OF]HF M)'WZCFW84BE!:F]\G/G\SPXS3+9*/Y@&T<)3*Z291HVUZW$Q66MDM7=J19PE21FWC,MH-O%GMWHV41LKN,1;#6;3MDP_SU&H M[31*H_W!'5\UUAW$L\F:K? >[>?UK:9=W%%JWJ(T7$G0N)Q&Y^EX7CA[;_"% MX]8=(Z'ZSW]O8^= M8EDP@Q=*?.6U;:;1*((:EVPC[)W:?L!=/ /'JY0P?H1ML,V'$50;8U6[<7=$<]%I+H[1_RD__T>"<,'#10_# MZ6D?)+4$.A4;RB:0#2R5H!KF:CP/^:A3]XPO>+2@, EN29GPT$$.O2>L+%J[>M]H2QU#[]L MJ%VC=@9TOU3*[C?N@>X/8/8;4$L#!!0 ( -R85%BDF\[79 , -<' 9 M >&PO=V]R:W-H965TM C=YE M.[,-V$V*]4-3(UY7#,,^T-+9(B*1&DG%Z;_?D5(4=W.,]0O)(^\>/L=[2,Z/ M4CWH"M' 4U,+O? J8]KK(-!%A0W35[)%02M[J1IFR%2'0+<*6>F"FCJ(PS / M&L:%MYR[N8U:SF5G:BYPHT!W3N*4-/!T_H[]WN5,N.Z;QG:R_\-)4"V_J08E[UM7F M7AY_Q2&?S.(5LM:NA6/OFX0>%)TVLAF"B4'#1=^SI^$<3@*FKP7$0T#L>/<; M.98WS+#E7,DC*.M-:';@4G711(X+6Y2M4;3**\3.O=7P1\0:+*T@B'^(P M3B[@)6.>B<-+7L&[94IP<= O6<*?JYTVBF3QU[F$>[CT/)R]*M>Z904N/+H+ M&M4C>LL??XCR\)<+9-.1;'H)_7\7Y2+*>8[GH.&W"H&F6BE0& U,E,[L#',W M1^ZM\'GA%DI>=P9+$ 3$>Z"6@+0#.B(U3,->UG3;]37\@4SUF@"J*#8["N:U Q(Q7S_!O+,G\8I M#;+,CQ([2%,_FTUH4R'IUKB(+^Z&$A/V2!@'EW)#Z;D=-="+I0W1(97X0[Y) M[N=I;KLHFD"2^;-X"I]:>R@:C(2V4T5%3\*(9&3QX$[I=KO90)QGD$QCR.(9 M;+:?*<_[H5U1:]UNR(8L3R'-4LC"[+LX/EV_GLE&YJGE%A==/4HK8N"8A8*OP["HIW>.G=ZR.%(:]\MM?\(:O4- MYL ^R<$>: 3G[G)P\MB2& _N2]&4/PFV?W?'V?'76O6/]8M[_^5]9.K 24HU M[BDTO)ID'JC^&^D-(UOW=.^DH8_ #2OZ>5%9!UK?2SK_P; ;C'_Y\A]02P,$ M% @ W)A46%Z8E'6& P F < !D !X;"]W;W)K&ULA55M;]LV$/XK![4K6L"S9-EQO-0V$*<=M@]%@P1=,0S[0$DGB3-? M5)*RXG^_(V4K#N9X7R2^W#WWW$/><=EIL[4UHH,G*91=1;5SS4TQ8 M-ZAHI]1&,D=34\6V,K:!(=%QYX53N_$*^7#:OP$=VWYM[0+!Y0"BY16:X5&"Q7T>WD9C/S]L'@ M#XZ=/1F#SR33>NLGOQ>K*/&$4&#N/ *CWP[O4 @/1#1^'#"C(:1W/!T?T7\- MN5,N&;-XI\5W7KAZ%2TB*+!DK7 /NOL-#_E<>;Q<"QN^T/6V4XJ8M]9I>7"F MN>2J_[.G@PXG#HOD%8?TX) &WGV@P/(3;GJ&#S[0BZFO=;36ORFKI& :71,@3T#95\S99:+B7AD8*:C=$[7J )&7$I ML>#,H=A3DVFTY8XPN#J0_D]RAY-B>:Y;Y8AL47#/E0FQ'_7Z;.ED'7.MTV;_ M0@SKI3@Y8\_& K.T]J.EQ5YKG9,B=.+4YQ14>H=&!6N#52N"1'3R7RD9IUW0 M[C1 AP8]8JD%/0/V!OY$9OI. 53G*#/*V]?Z>]+2U;JU)(+]$$K??U+_F<#) MK7V)_Q;FHWEZ3?^KT70QI_]L=/U+ N<*,3[IEA)-%=X$?SU(N+YQ#JO#LW/; M=]MG\_[-^L),Q2F\P))&ULG55-;]LX$/TK RW24V!9LI,F6=M /KJ[.701 M)&T71;$'2AI9;"52(4=6^N]W2%JJT]HINA=*',X\OGF<(1>]-E]LA4CPU-3* M+J.*J+V(8YM7V @[T2TJ7BFU:03QU*QCVQH4A0]JZCB=3D_C1D@5K1;>=F=6 M"]U1+17>&;!=TPCS]0IKW2^C)!H,]W)=D3/$JT4KUOB ]+Z],SR+1Y1"-JBL MU H,ELOH,KFXFCM_[_!!8F]W_L%EDFG]Q4UNBV4T=82PQIP<@N#/!J^QKAT0 MTWC<8D;CEBYP]W] _\/GSKEDPN*UKO^1!57+Z"R" DO1U72O^[]PF\^)P\MU M;?T(??"=OXX@[RSI9AO,#!JIPE<\;778"3B;'@A(MP&IYQTV\BQO!(G5PN@> MC/-F-/?C4_713$XJ=R@/9'A5 \1,:F26#LRNTA<1;S"?P"PYAG2:SE[ FXV9SCS> M[ #>/6Y0=0BET0U<,U?#%<%J4P777F'1;/!:/7JM^1T^OL+[.G1]P1N#L)!K974M"\8O!D>@ M2K#TO"J(C,PZ$EG-5KVM>#36MUKACT"PXS$ M$]J]5.B'#)Z1.XQVF*_NW 6765E(820.M)]1[M'X[4M=\Q5H+^ C"A/:!+C( ML.YXD+.>?A;PU6JC5S_]P9:0L9 MKD:^K#D#K\A &RHQ'I=U^>!3CM971S(]FL"=X7?!T%=_(&\>.]FZZGENQL%\ M#(J?EUKG7F>6$"Z6T5HE,<1-;1[^4!RPF(D M,SC:UYGQSFW*I;CV;X8KY$Y1N%A'Z_@L78;;^)M[>-/>"K.6G$^-)8=.)Z]/ M(C#AG0@3TJV_FS--7/?^M^*G%8USX/52:QHF;H/QL5[]!U!+ P04 " #< MF%18+[]5CZ,# P" &0 'AL+W=O+*%\T\A2G^_4[ MDK+CMHF!?C%%\NZYYSF2=YYMK?OB6T2"1ZV,GV9Y[YJ40M_;CLTO--8 MIP7QU&URWSD4=732*B^+XDVNA3398A;7EFXQLSTI:7#IP/=:"_?U!I7=SK-1 MMENXEYN6PD*^F'5B@RND/[JEXUF^1ZFE1N.E->"PF6?7H\N;2;"/!G]*W/J# M;PA*UM9^"9./]3PK B%46%% $#P\X"TJ%8"8QK\#9K8/&1P/OW?H[Z-VUK(6 M'F^M^BQK:N?9108U-J)7=&^W'W#0,PUXE54^_L(VV8[9N.H]63TX,P,M31K% MXY"' X>+X@6'-=R7ZT MN$OC-U%A_"Y S ML3V[[3CBC7]:+?Q]O?;D>/;/<\(3[.1Y MV/!P+GTG*IQG_#(\N@?,%J]?C=X45T=(3_:D)\?0?_*(CF(]S_1(5CZU"*OE M"FZMUN@JA/>V-[6(#^J$>//UJXNR+*Z>EN/"Z.H4I &5,Q#U@S 5GG%E MZCKKZ R8J+:$($S-N_SLI.=(4+7"21)KA:F:2)+H4[Q:.F9IG=]Q.R @'-LK M;\'V+NBM^E")V+"1%;H$X \A>,1@82Q45G/]]0DH)ND[<.N@C_KBAA:&57'1 M) B'R_@>.G2#_)W5D_L/R>)3,Y;XY'R_]K*67*B#(F;N8S:">R,-YTMRWOD* M,&VDMJ8A"<$3[P3^'(:/B.T8I#=.Q=$*-RPD5TKN1'I M1@8-34\]XW-NM*3H'$[T>V6_T])\&?QGH4?LKP,SI$_#;B+U">C8LBCF^G:9SP_+FR MD!]4<7YLF]BK/ /VAE)!WZ_NV^%UZ@)/YJF7W@FWD1Q>8<.NQ?G;:08N]:7 ( 'X& 9 >&PO=V]R:W-H965TS#6%I2J)HZ@OX M7M]S[H?Q(=IR\2 + (4>JY+)V"F4JB<8RZR BLA+7@/3.RLN*J*T*=98U@)( M;D%5B;W1:(PK0IF31-8W%TG$&U52!G.!9%-51#Q-H>3;V'&=G>..K@ME'#B) M:K*&!:C[>BZTA7N6G%; ).4,"5C%SHT[20,3;P-^4=C*O34RG2PY?S#&]SQV M1J8@*"%3AH'HUP9F4):&2)?QI^-T^I0&N+_>L7^UO>M>ED3"C)>_::Z*V+EV M4 XKTI3JCF^_0==/:/@R7DK[1-LV-@P=E#52\:H#ZPHJRMHW>>SFL =PQT< M7@?P#@'!$8#? ?QS 4$'L*/&;2MV#BE1)(D$WR)AHC6;6=AA6K1NGS)S[ LE M]"[5.)7,R1/:2#0'83\AE@%*J:9M'N]('M=#MYRI0J(O+(?\.0'61?>5>[O*I]Y)QA2R2^2['Y W M\OR!@F;GP[T!>'H^W#W1C=^?@V_Y_/\YAZ%QMW3!,)T1BXFL20:QH]5 @MB MD[Q]XXY'GX=&]9IDZ2N1/1MCT(\Q.,6>_-!"25G&J\&9M=C08HT>;I)Q>.T% M$=[L#^-E5!BZ_D%4^C(J",)/5WU46S[>NYD5B+55.(DRWC#5?NJ]MQ?1&ZL= M!_ZI%M=6"__1M,I\2\2:,HE*6&G*T>65KDFT:M<:BM?V_B^YTFIBEX7^08 P M 7I_Q;G:&29!_\M)_@)02P,$% @ W)A46&0ZHFM# @ B@8 !D !X M;"]W;W)K&ULG95;;YLP%(#_BL6D/;7AELN6 5+2 M;EH>.D5IMST[< "KQF:V">V_KVT(RZ:$2GD!VYSS^3M&'**6BV=9 BCT4E$F M8Z=4JEZZKDQ+J+"<\!J8?I)S46&EIZ)P92T 9S:IHF[@>7.WPH0Y2637MB*) M>*,H8; 52#95A<7K&BAO8\=WC@L[4I3*++A)5.,"'D']K+="S]R!DI$*F"2< M(0%Y[*S\Y7IAXFW +P*M/!DC4\F>\V"FGTEY1 MV\6&GQV4-E+QJD_6!A5AW1V_].=PDJ YYQ."/B&PWMU&UO(>*YQ$@K=(F&A- M,P-;JLW6",L *MA,"L 'WL2D:NTCN8.#?M M:>N.%ER@A>B!,U5*])5ED/V;[VJS02\XZJV#4> ]I!,4^CX7< M./0]N?D@-[_JU)Y Z*\(7W ;9[[GMAC<%EBGWO2'RH0A>V"$J6\ M8:IK%VVZSYTKW+CLL M]<\"A G0SW/.U7%B-AA^/\D;4$L#!!0 ( -R85%B */<('A\ %)G 9 M >&PO=V]R:W-H965T/?;$V&^V/[-8T\,O2NHUNX:-; M/?9;9W1)+VWJQZ?'Q\\?;W35/'CSFKZ[<&]>VZZMJ\9<..6[S4:[W5M3VYL? M'IP\"%]<5JMUBU\\?O-ZJU?FRK2?MA<./CV.HY35QC2^LHUR9OG#@[.3[]^> M/L<7Z(E_5>;&9W\KW,K"VL_XX7WYPX-C7)&I3='B$!K^=VW.35WC2+"./V70 M!W%.?#'_.XS^$VT>-K/0WIS;^O>J;-<_/'CY0)5FJ;NZO;0W_VED0\]PO,+6 MGOZK;N39XP>JZ'QK-_(RK&!3-?Q__44(<9L73N6%4UHW3T2K?*=;_>:ULS?* MX=,P&OY!6Z6W87%5@URY:AW\6L%[[9N?36./6Q@7?WU< MR!AO>8S3 V._5C4YJR/\!C6%!)(/3F9J=/C MTR<3XSV)NWQ"XSTY,-Y'M])-]9=&09BI<]MXV&VI62Z:4ETXXTW3\A=VJ7ZJ M&MT4%=#E"KXT((6M5_]]MO"M S'ZGS$2\0*>CB\ =>M[O]6%^>'!%N=RU^;! MFW_\[>3Y\:N)[3V-VWLZ-?J;MYV';[Q7[XPO7+7%;8RM\>ZCJ*N+*Z#79F-< M853EE58UZ'[5K-36V>NJ- [I5=2V*^>H'27H]W9;[U2Q!I, DMJ ;B/]%&ZZ M*@P,43@+L]C.J55M%T!D9UI=U:HQ+:KPD?H(/\'P95< V3?Z,\S<*J-]!;.! M(9+GC?,SM7*VH#_*"IA3+;K6XB=:1$4_(']KNX*?J\*K9>4V7K56%;"IKJD* M8"\] HI4ZX5U^'FQ4[[:P #+'>YT#=QHUV8GNZ''_5H[7);9S%357,,&K=O- ME'5($7I U[!7D#$=-[R!Z=:Z:4SG:F;-8P'LQ=U5\)<55."O7"[>>!0:XIU8V'O.UJ1AB_T!MEEOFR- M@\';M6Z5!49OJK_,3'5;6*YABH'9)U+ OO-Q0"+8* %I_T,MS%K7RP&_3*,7 MM4F/(;%AC> RO.D+!TQ!;J4I8-*PC$1-D+1KH U3$\SVO%T[VZW6,Z >3&5D MC2"E($*%]2TP&[@&8FF$#]>5KQ957;6[F?"DK?P2I@<#T,':@.0P>^E)J#1, MHC>U&7"*:%496./1A*8^BYKZ;%K'0(@]LB"W.&.J>H]AU&_ *UV 8&]U0X); M1$,'>KF,-LTGF[;60*R%,< ,9[8@TB70']]#Q@#=P!NU:QJT:UK6>N!EM479 M7K'K ';"[V;;\KLH,)^:"C^1[:1EG@&Q0=74PW_\[>7IZ?&KG\_.+NC/DU>/ MB#,BQ/2VS$8OYN9GIMXWX!;H?5!6;C_ M:"02RZXI@I:$9X"T:&:6\F[4)(\V/C&6V(&6M""=KFV1#7)T<'08HY5%$&G! M GPZNCI2)=I8Q^H&=A\57S'VC-QB>\1) &3S'()>$YID@Y< M7G^<,IAS=A-@23K^C&K<>#.<2(/_!YN+5KTWERH[1R849M@9[7BO;4997?X! M%HZU"%T!($'C4'\T.DF40MO@%I#2,(JCKYQ9(Z"]1BL'GPVIUYCH92J*[G7L M59+KZ?? A>?U[8NR5J;/SO0Z"/U,]A>^-D!.[T'JH() 0B+NUTZN^GK2FD: MFZE(D!?A=&5X[Z*]] AO5M;X4,C^:(;.G7[NW%UW.J5R+Z+*O9A4DD_ >AC^ M1P !&Q2E,36[VPAH>L%@$MG&+.N(&46K!]0&-@#)'M66>D-?6K A/M)CQOQ/;5E28?6!E&28#5?.<,4YN, M.BYA_ 6E>0I2*U&XL=W.HC2.+4;TT.>*Z',-XY?(O8"?L"7:\Z+M"!FB;'I8 M:5>7L'K8M1,Q75N?46Q*2%Y&(7EY.P ,'F>!0H_D'I.4>PR# ],JBT"J%KJ M"@"*KCLB[+9S8'T\:S.B:C8R(!@$P, N56B Y<*DJ%RUN<5R@A^R0[UT$N* M8;HEJP-K""0LLR7YS,#2>[ZB]: K ";2!$W#K@I")RG*+. 5JGIS%X\8202P/8!2PM"P>3$A<# MRP/HKS R\#EM1SDL.OB58=$\-+M<^?M\RBA.%&*2#V5A3C:AS_C!L#W+XSO8 M/= +G&DSMUW+\2,F=]!Z^!X5!TJ #HF=*P#\I=HRYF4Y[,"6M&T-](@#AVEW M]#2L:8:"@W 13"^\"+C&@=G2: 5+M'!&P]*2#6(,T>9[D\B#YH!'D"YK"$!S MR6 I/BQ)?K% MH6F<"&*/U*>MC8@+E-%+SF>KPZJE),$@U,F5#;7#/6,Y1K\.V,M")) MWU?V_.TATG?1^WTWZ;:N# $."+(XUWL@&+GS()0=.%]7!L#3%U-TF(55'Y=+ M8)+#I"SY&J3E.4=N&!>>O'@%/I_>D= $]=(49"\(*W&2!9 %IFDS3%)E$XNA M8&>G^S1=4 2-40+(S=9ZMJ[!7L-L\"XPH@BH!7G,/Z2YLOP%&2/'_J&QR@L9 M&.-!Q'.SMO3;V@"_)08A#[+@(&MZKS.2^&:'NFMJ#QJ*"T]!VRQ[,R F7/46 M0J.&UHQHG[,IUJ7@Q*/UXN16GSH=!/#\ B(Q%$T8I=Z198@NI<1/%$SCNM(* MF#%H36F'0HOH /W!#&%((4U)\\EQ2FP?3XKB.6@WC.JBOIZ#78)M75;^\VB. M^UL-UU]OEH@_F9Y ^S71CO[X$>PHR!PR:72Q]QQ+Q5\*_,-DOY#3]>2#B_#0 MNEJM@5-U!<^5E)F+E@L#&NNJ%=E&4#AP1&3DX77*H0%R:M1WQ^!1=M,,/4T$ M.IW"YK;#4@OIG;=9_ RRZXI09W0#0,6+4+^J@1Q!@]) MT/HQ:! _+>)=A*T'B%-PPHI,A-ZB^O;I6)H%SNQ;UT6K3FDSS)&L$"8WK#'( M OH2-'#+J6EZ-\UYI-X/F0+N"_0*%?$05_8AP%@2!:Q548/+!CJP+_9K4.DY M*G]?$M#PD0G'@&QR"1OKS+^UA&S>&=C99BZ)HB-UE=C0?T5?ZZHF3J$1Q*P\ MCZN=JQC^96 FH):N@2W5U5_PP(JR)5Q$H'0)@P=O!HLQC%[U%T0"PZ0(6/QN MTW$Z;"P;A).HASC!H]%,9(\XP/3+_NI2+N>.V9A[Y)V.U+E@U$SR87^N,YR M1;6BL*GRMUT*2#'XW@'" BS'6=J-IL2PI"(&$<>(*E+^D1T;YHGU!G$]$@MK M!.SX9QPGX0\)RV5,1VKRE*!YL"-PER6!7T 19/;GSM02,QUYPEA+$ ,D-?$W!&@5SX8>M MWLFW6T L7R3>R^2RQ(C12GHE6U>#QM"@]J+9PCT[9O]9P:%P)8,M17J4( "B[ I#!A?L\63ZZG;CC+D1XH'=H MC@C)XO)H1=$Z^6K5D)?G%.Q@W"P6E.S_VAD38?0R;(_3L8Y(4!(%A7.Y7W'F M>T4%K^>OU =:S0E]/CEYI?[L+*HIA:V>O07%2&PE.$CA[%B1N(\F/\_3] <_ MC8/OLX/-!WGAL!*>.N5H'NI'@U61[P1NU^"R1U"!8 ASN, M^RHT;M>V!F;C*!"R.8F->[6'AX18^L1X1*'0P^(1U\#G)03IUS"CA&=4P&I$ MT\'L]E@<1!=SWXDJ& \!*18(K7@L*7%2 8S@"85,SEGN#B@Q9LL&$.1(E7XB M$X3Z+42N0U[AND#@!8R57Z*)(C$IZG.& Y M W/N8[,.%Q6&EJO)9Q 7S98:OZAMLYK7Q!P>8L^(#+Z!Q&W=N=1U%G^VY'P%PEDA131-&Z,9BE[5]; M4"N@%&:(0R,&-KF$)HRC$*YB>1>4+"MY-YC"P :*SK$-7X3Z!2HM)E2I-:;% MDO#1P742R"@##(Z(ARV'X"#&J,$1.R/YF:P",5Z13*TDC<6F-G&):L MT/N'>IFLC=+H+5;X/*8'X2&&C9YKX_UT-Q(L4:1'.K0\N-(9VBBP.Q6(!2YZ M#7&[=>0>AJ2F]HVRK*1$GRZ3:3G7S#C$*_%8X.P>)P_)O@2OD(;QD M=ZA[::&;SZ[;M@58'!B@Y'+!C4,UM,OE*/T(#,3<=Y9+ CI@CKI!8<..34K5 MGE-%W@=134":L^DI3[S0$E;'.C\BMD$P)'T-_%N)LN IGW-M$M3^YNG7D]0: M=#+=U'/A,(U"5_G=G:8Q.\:[**JJ7/++NIJ%=*- MF<93C(1I[J#Z6:A;HHH#N(M]EA*+T1='ZMW4SWGT X)=R)#3"NGH"L1"CS "S)"CBN+2HIC[[V.O0:D^\0@?JJ51[S'(;L@E ME @48"R04;ML;Y K3RBM0K5GP FPK31^^(ES[]D/K/<./ VJ_K/Y"WGP S(> MVT="6QTKP15&--SW* -@/ZL F_"=LO);"]Y<<#)3+;A R@U)AJ>? M4+F'H4(#G8B4+Q@K"Q4C)NJEI&P'&P*@^(7D6<@8EZAE"(<%QKY M7>X,;O4*C3U-._8B[(,[]=P.E8>JHO025SG@O3FVZ]+>>7CYU47+7O8Y>Q9= M(E8U%FR][D8RQ U3S07BZT_X!RY#WL M1NEGV>>GB4%7OIW'PEH4?V\N.GU"++4I4@,PY)ZTR8$GUA:4862G"/9X=3HW+=1-C0W67&MQ/9, M:S#,RIF3NG/PP2%7]\2I:RASP]%F['G9Q;1 :*JB7@[S!4MEWJ3#"*C,9 NB M4^;R=6_KT@HF*Z0<0A\0<@9T5"I^0M;!U+QCBO\*:M4SI-7\:%8DS\PM6_&] M)[+\L"!";@U#+:G-\'GF0DY&A-.IVX=C^PW)+&"74!NGGB[-!V?V,B)#EW9C MI#DB\;;'(^Z/SI-!J E&R.7DK$\+-F9ER ]C#R=A.M&8VEPC:EMR!P<6E"L' M?@Z#9PR/N9=ZTJ.DWMV3Z=;;2]!\S/#2-.\2Y26@4K3\C$TYC"JD.9>&>L^@](5;+ Y";_H M=L;-_18"" B"9"F#Y!>RNB#\M@,$OB+\,GXJ;7U]B>&%)LP9;G*&BD M 7>D]?9(33$^M92=3+>#O4]I6&[1'96 .XXQTNT[SAAJ8@SZVMOD?N]L*'U@ M]KX !AK'BHKCK*NMSW4*61N/Q,4667)%![HCOS)YW(G'(P5@'4+E(74X_RZM M5GG&K#_56+&[4K65:OQ7?7:O-SW?V61^ MA=QO6L MDRI7A]C^8GYR+.F0=R/<5\_B[U/'GE/3VNETE]G[Y/&!?1]0NS^0 MES^L/O_>B"R]"2@,<073,XT140+A 6XG3$G:/@:HFK*2\P[2O#$HWI."HH&2 M#EC,C4=Y&CY+W1[#]:'%#6A5WL:8<6PNRZ$DO;5RMMN2ES E>PR0]=0'$I"^ MD3:Y)8I.LL34D(U&.@5 G:2IPYUR$;V>ZBS=?:^C9TPS(2R$.2EG>CNN M!3K=^W@II_XNV28?ZF.^^RCJ,IYCJ=A$XK^AN= YUA:"V=A;@Q=3T@\HT1^>.SZU0CF=&!R'!LD:-] M[,$+)^V/^KF43NH M&9_XXCA6ZGNY0Z#9R:F$,VF^S2NHRS31((TLZ\;H5C 29JDJ3\>6%)A<6CA? M]0#L!3R$5P;P_+AUZ@!V;4,746 ?H:%NEGJ75A,(D\X/9SGYO* 5O$\XE[($ MK]F89=6*];W91XAICUQ=;6\L8Y4C=3Z]8Y=EWZ2N7?32\QAMCJ2TLZ)='G10 M<)*?!+UO[^D5D3IG I=]8GTPKCK!0]TT?)0T])<$-6*BA,I&1NL@#K$13;HP MDA%@)MR-""PF7(?"EB'*JH33L-^^3K=;7N$Q\?E;HAS6#6&*@\=_ M[CF4XA^8.T7^0\QO4EN*--9)'C,DVO\$_G%#-YUH#PG,6<^D\HTL>'+%QQSZ MQ=4G'Y+HI( 0FW,P3>/H&^W*]/3EU=G4T_VA+WM#1^T=>_1=[U$#"F=WQLBC M*3E1 S +K_QX=9%=D,')([G$Y.GQR\D7E!+<3&1)!@=6PI:6ADK]X>0=N, ";"-8,U" $-J(00(SVX6Z M: -!(FF9]/1*(QG/QQFM7"["[-EKY/)A1,R'22.0\*#RL1( U+^FB&C&;1:4 MO.;\NBN%_(3D#%[E%(*KE3.R>SQOB/K#[4)?-,OTQ\T(B M1#%?D!"^;49='%@\1L[9.?NTWAE+#[;7@D]W #R70*AYJ[^$ODK:D$!?Z80. MO=+4U/'RV=][QUNEP34J\!B%Z 2/655\W!"5IB&(0D>KAX9.?&>/7.JWW=:H MM_3%3'GF<--M%KRF(#^)F9R^;F*/ @QR#5B'\P<7^5-Q8CI^%$:2L)^71L0H M#5]2Y6=R5)J$S!*BE&!6SKMAR%;'7 &/-0ELT\'IJ+%6RO2[1;9S@6,LA0# M.//5E_D&K](;O@-KRH9MU"\:, TP]X1,^"]=C7\&>A=XEJ'4+KNYIF^">UZ4 MN\1(7\3/D#)FV;70AO&VUJ#<5P5L%G6%+XC+.I"Q(WMO.K2@:%=F"CTFNQQT MB$'L\#H2/BG6ES+)Q(2*MBRY2;D3>(9]C!QLV\OS/^33_X_&*' A*QAN4]-- MAA"+:5]/5;T=0G2DNV:TH\\DYN ML]9!$W!/*/FV'UPJK*J],8(71N9GA0H>[O#]1\("TVB67GAC>+%8(!ZU%/:Z M0=-R?*S!IG0P%GK-46$A'1W1F,E-#,Z>-I%DH7/XTDP0Q.:ZZ M^FSH0 GX#425Q#-O^0P-(@S1PWVRLS6)>7:N]P[6&I+5J4P,2_VC4RSV#9!-]N-\0OQX5"_:<.6@8W@D5#KW&9-ZAL2B>B'?0T&&) MI "$R-(M+KV[#4AX>?TD5%$'^W6QP!PZM)JW&I/@#:82 W"-OIJLH>[=:S5C M0N5SKK2 W'7@59Z^]&/\#==C2<^%^HG74/2;Y[.$2$S-YV.9?H4C$Q66'_IB M*;!GK*OMT#5H6127KX,814LL4](XGK8E9YRN<)%FB;UK+L:JKR/V(63*J!J1 MBSM(=2T0>>#)=;A<31I=B-H=6#8ZK$KP#V/?2\V32I"G3C@"V M*RN)V?J*N#&<(\)7;S$3'D_TZ%)G>=T@BRJK@_8S@K$:^Z%]HI?X!03>$%]A M@QM/^^SX[[R,:FU#+I*Y(A)#:H=M#,1IOJ*)ZX=9+]4(84&IR.+Q';@(2#E! MGU@ %O(B6_Z:6L$)*9S\P4? <@1_ U=4HXF0"Z] MW(NPAE U/P\E'=EDGH-1?E?573CXM;>4?@.C=&%B^E3,=S[XUK:FD20KST\+ M@EAN_(=4!<"SEO,2UU%=A_9LP2^Q/ALRQ %&3:QZDOFI"_ITNIGY+%V9>^%L M8SOI;.5#?W3;UUEIMZTD_ \__BNX[?^"9A_1/ M?B=X^)'>PB]^9.PD"&'T\O2SJT]XF?O)_/BEFJGQ*Q(?_F:W(-4OCY\]4O.< M) C*SD/J_2Q!N_C=AQS^(L_/8\&(#,YY/$'XL6@M2CRNA9./&A98]AT^BU;, M+;C,_%#Z/AQS#=-G:#-^UT.Y6:>2'NU5DDM" (PP&L1%,S6>'S^?"3A%\5X* MV!MO>!(33^ 5?5U@D 2<8)[1TQW%] %>K\_'%L*3!#/P;'R0!#0G"!W7NJ3; M-N!].JTOBMST(V_=9]J!?KE;2_L=!?(RQ.7WD,PG\^/OU$SUHCD1R!=/CU$@ MW^=GDL GI4?!"H9K5;'H"9L1$7OR51&CTO\NW,L*KC(T X:[#S( %X4@!"XD ME["A6LX?M>%2RM! $!+B_6M?X9->K1!J,I1+-Z9EO:G[7G$6OEL8O >X%]R& M8]A9N(O5T9ZD/:7X /6&CTU@%BU=J];VI)#AY2A4H?IH(TE1DWL5Z00-Z>OL MV&O:_U'&[Q? [W!AW64,-X3IIR]'F7Z9+C8+K^;,_Q6?O3_SL^-PX0JY5"&D M3@_Y<&UT:AP_ [TL+L$0^X 3QG]%Y\[]02P,$% @ W)A46!=$ M=%?% P "@D !D !X;"]W;W)K&ULC599C]LV M$/XKA!H4NX"RNBQ?M0WLE31 @ACQIGTH^D!+(XL(12HDM8[[ZSNDCCB 5\F+ M1')FOCDXGT:KHU1?= E@R+>*"[WV2F/J91#HK(2*ZAM9@T!)(55%#6[5(="U M IH[HXH'<1A.@XHRX6U6[FRK-BO9&,X$;!713551=;H#+H]K+_+Z@T_L4!I[ M$&Q6-3W #LSG>JMP%PPH.:M :"8%45"LO=MH>9=:?:?P%X.C/EL3F\E>RB]V M\RY?>Z$-"#ADQB)0?#W#/7!N@3",KQVF-[BTAN?K'OV-RQUSV5,-]Y+_S7)3 MKKVY1W(H:,/-)WG\$[I\7("9Y-H]R;'3#3V2-=K(JC/&""HFVC?]UM7A5PSB MSB!V<;>.7)0/U-#-2LDC458;T>S"I>JL,3@F[*7LC$(I0SNS>0L"%.7DZHGN M.>CK56 0U23.(R3$;QDR#%Q>,D+>!_5@0KV'[5MX)-[*;3D+*=M5XB<;!5H$*8]D 5Y MPP05&<.J[/ 0L 6-)O_<[K51V$3_7BI1&\#D<@"66$M=TPS67FU]J6?P-K__ M%DW#/T;2FPSI3<;0-SLD:MYPL*$_:L.P52$GGS44#2?OL>>UE6P5$EF9D\OX M\6O#:IO7I5Q&O5W.Y:D$ H/KIG7->]?UN6OH79,C*"!4DT)R_#3HY:7@"R#O MA $E*.*]@DY 54:;[6J&U0\P^]%'XN"97 FL&$4C1+, M-(B0OIYUBN\!Z5U*GA-68N"0$N"C(!JCS%85EPQ@7+9: 31 MUXXD]A'_I%*OR#3TD\44%Y.%OUA,+M9LXD_"F"2H&84O%21*_60^(]'43Y/H M9^6-0G\QG;K7/'JQ )G4AD1QY$=IA+HS?QY-T;W&KJ!9UE0-=WV1 _8<,G.@ M+JWP;CIJDZMYZD?A_)I*V4Y3 MP%U5=K@IK#&2V^$:4?5 M<#H,^MMVOGU7;_\2/E!U8$(CGPHT#6]F6"'53MYV8V3MIMU>&IR=;EGBSPHH MJX#R0DK3;ZR#X?=G\S]02P,$% @ W)A46"Z0CC@7! W D !D !X M;"]W;W)K&ULE59M;]LV$/XK![4H;$"+)$JV%=5DS(_=P)G,/ 1[[)C1WP%K,MW;![9CYM M[Q3VO XEY04K-9&KRN1,[D+*,5L)\ ME/L_6*NG)IA(H>LO[%M?WX&DTD86;3 R*'C9_.ECFX?_$T#: %+S;B:J65Y2 M0Q@K#>BV48MM8Y&Q.,_?+>8<&FFC@/85B)X"^JR@=N^I2!%S"@->HD56&B/U M\)5,.)8[1*VSEW[!DL,SYW5V3H5=4)W#EO(4WL(D=$>C&!OOWL0D(.^?AZZ. MJ+;1!\$_ZFP3,&W@WT+DQJ/S%\#-R#))9%4B@F()X[LZX8$;1A,8Q/X0FV0\ M@3\Q5^HP%7'/XP#&&!NZX\B'F]+0!=*K&IT#@*+'KB3T03_2&>,K!ZDH>+7U@/S3D(W'(78&+E19->:Q&[L M!_"[E.F>"V$MODO\$38&M<_0KE9DYX83U3_JJG]TLOJO>L^Y]916>SU%[S3P4A S53P[S7Q::_ /C6SW/*,_7PKQV<^/#&J]/'] M.SZ8CRV8U[MQ"Z8V];M"0UV(S>7;C79/EV5S8S^[-^^>#U1M.-ZY@F48ZI]- M,-NJ>4LT'2.W]?V]E@9? W4SQ^<74]8![9F4YM"Q$W0/NL6_4$L#!!0 ( M -R85%BK&?UBF@, #0( 9 >&PO=V]R:W-H965TX7I[:!7!IT@2XV2+)=%$4?:&ED"TN1*DG%FWY] MAY2MN(77+?HB\S)SYLSP<.CY5JHO>H-HX&O'A5YX&V/ZJR#0U08[IB]ECX)V M&JDZ9FBJUH'N%;+:.74\B,,P#SK6"F\Y=VL/:CF7@^&MP <%>N@ZIEYOD,OM MPHN\_<)CN]X8NQ LYSU;XQ.:3_V#HEDPH=1MAT*W4H#"9N%=1UY M4RXKIO%6\L]M;38+K_2@QH8-W#S*[4^XR\<1K"37[@O;T3://:@&;62W=-Y%IA#^7) M*-IMR<\L'_$%Q8!P_LQ6'/7%/#"$:O>":H=P,R+$WT"(8O@@A=EH^%'46/\= M(" Z$Z=XS^DF/HEXA]4E))$/<1@G)_"2*WQ%61%JC.9@.W MKL*HX+?KE7;KOQ^KP(B?'L>W]^9*]ZS"A4<70Z-Z06_Y_7=1'OYP@GTZL4]/ MH2^?QNL"LH%=(AI6K_LQD"FR[ACID[#'27]&4K2B:P)R4'3G=N%)6K/=[H%UX?06_(E.C H#.#[L5%=6>X7DKR%4.FHE:7[@CM9_8?B+*HAJ4 M.@ DI/N!-RWG=/,-G$&:Y'X1QC1*\M2/TM*.PMPOLPBN!>.OIJTT9!$9)9#2 M^BR%-/;S(H6/1%E!E/AY6$+IAV$&F9^6AU&GBF9A[(<1(40S/TP+2+*,''+X M*/"=H2[T5HPDI1B%S:V,2Z+BQT4(S](P/A7E##)B/8M"RS\+_;+(+.LR(]L< M3F@BFS21_5=-W&E'5]X+XN66KEK?&2H0S8[,T$JB[OOO4PSVB/J:5D^&. M:^69]&!LTX"5;>W@=H313BBNV5H.Q-#.>ZE<$]Y-ZSWI?<7X1%H=D-9$>NBA M0?P_ KMAG(D*?>*W;H6PF!3^U<*<093ZL]EL'*39#-Z+%]E6A'T0$T@+49I# M1*K)"JL:N1;MG_\P.H]R/TOC"QH09E1Z\T5'(09FSJT^KT)%Z/+\&;^?B>?F"*TM; L2'7\+*@,U;C&S5.C.S=N["2 MAGJ@&V[H64=E#6B_D=+L)S; ]$=A^1=02P,$% @ W)A46/9O\XZ3 @ MN 4 !D !X;"]W;W)K&ULC51M;YLP$/XK%INF M1$+%D!>2+$%*VDWMATI5VVV:IGTP< 2KQLYL4]K]^MF&T*Q+HWW!=_;=<\^# M?;=LA'Q0)8!&3Q7C:N656N\60:"R$BJBSL0.N#DIA*R(-J[0NJ6)! MA/$TJ CE7K)T>S7M2IZZ_W"0,,-O)$1=0N1X MMX4RIV6YI2:/)U<0 %20H[.A=(*#>Y) MRD -EX$VX#8DR#J@30L4O0$41NA:<%TJ](GGD/\-$!A6/;5H3VT3G42\@.P, MC4(?13@:G< ;]5)'#F_T?U)_K%.EI7D5/X^);:'&QZ%LIRS4CF2P\DPK*)"/ MX"4?WH53_/$$T7%/='P*/;EK&P2) KWBO+9OF.KG8XQ/8AYG?%^"?<%MA\<6Z(=U\@=02P,$% @ W)A46#JIEOL] P *P< !D M !X;"]W;W)K&ULG55M;]LX#/XKA%<,&V#4MNR\ M+@G0IMO=@!8HUMONP[ /BDW'0F7+D^2DNU]_E)QZZ9#E@/MBBQ3Y\*$H4HN] MTH^F0K3P5,O&+(/*VG8>12:OL.;F4K78T$ZI=,TMB7H;F58C+[Q3+2,6Q^.H MYJ()5@NON]>KA>JL% W>:S!=77/]XQJEVB^#)'A6?!+;RCI%M%JT?(L/:#^W M]YJD:$ I1(V-$:H!C>4RN$KFUYFS]P9?!.[-T1I<)ANE'IWPL5@&L2.$$G/K M$#C]=KA&*1T0T?A^P R&D,[Q>/V,_L'G3KELN,&UDG^+PE;+8!I @27OI/VD M]G_B(9^1P\N5-/X+^]XVRP+(.V-5?7 F!K5H^C]_.IS#D<,T_HT#.S@PS[L/ MY%G><,M7"ZWVH)TUH;F%3]5[$SG1N*(\6$V[@OSLZ@,7&KYPV2'<(3>=1CIQ M:^#-7WPCT;Q=1):B.-LH/R!>]XCL-X@)@SO5V,K ^Z; XB5 1/0&CNR9XS4[ MBWB#^26D20@L9ND9O'3(.?5XZ7_G?"-,+I5+V\#7JXVQFJ[)MU-)]Y#9:4C7 M.G/3\AR7 ?6&0;W#8/7Z53*.WYTAG V$LW/HJX>^8T"5L.:F@O??.['CTA>* M-P5\;'9HK"_<*>IGP4]3]V'PES#B9Y@0N(&ZOS %< NE.].=/U/7:]2O>:>U M:+:N9P39YXH:V5BRIBQLA5 J21.!+.9 !<9Z@WHHLOLP.*K3+>Y0PE6MM!7_ M$,9:&0N?&QI#TLM_T/BA2WNKC*%+&T)#X^S(_7\[OA$-D56=H?S-6_CU6.;N MJN,/:DC]2(YE1U8'K@E<0#).0I:FM'K]:LH2]NZ%;I*&Z7CZ8O.@.JKG'-9( MU$N1%C&603D9N.9K-B#%+"'WFLG"&3I[0 M#G.)LBS,B,N%=^CER32&4_T0'0TP8K/U8]K0G>D:V\^R03N\!%?] /QIWC\C ME.;6E51B2:[QY604@.Y',RF([]WI6>CE5C!9=XI<$T M=L27>H/VVNM*TBGJ4DM;(7\1T6QY .0DCB)-V#E_:Z4X^7OH!W MC07RM=<'OV:YL9KNQ^]=2EN<;#>.>S/G9L4*G 3T* SJ-0;3@U>#D_CM'I99 MSS+;ASZ]H3=8-@)!+6!?I6;N;G-[#Y>R$ UE'+BDS4(UTAIXT I?T.[2N)?% M;HU?*P3VA%+14A(M)=91"HG* R>VY:1[3B%(M"%L&,48 G*8YAQ^(M/M[0&J M/=8Y:E__0T*QE6H,DZ4Y\M?!#8D;!C!GPO$)(<\QS$<-P%(\H+AV>D?=H,((?FEM\HQ8+XWD[=)*BUJBY M>S'#,!NF1W"8A<,L\79T%A]16;CE3/R3L+PQE&ECH%!USB7KVM2?AA.)1QDR MO:@%&7Y1&.:Q,^T[KJ*T:.F4:->^M;HN%!]VO[1[_;==]8V MG0?WMG5_9IJR;4#@@D+CX]$P -VVPW9AUQV MX0[H_TG3OU!+ P04 " #57VWE7S!S?$D*!N;$(C'Z/>(-"6""B M\6V+Z0Q+6L?]]@[]MRYVBF7)--Y(\20^8?<0BW#F''NU^H8WG+#)M/E=R MLM:$9AM=J)TWD>.UW91[HVB6DY^9+Q3MKS+/P.H"[KZUO*&,&Q<^4CV"85/=+IT)"!EJ79,/*/X!F9TG CJZ8EPSW\W=2GLN0Y[DU8&F6K:FY:0DA^ M&6T-WR/)=BU% ;PBSH]HK37B?P92=J=Y6K>CJHD"JN9RS_J F"%;1 MWO!_^X'S+'$#/[N \U'H1@DU'J1AXDC]]5D_@RAU_3BRC<2-DPQ.B"\9Q)?\ ML/AN_T_Y:I_RW1/=FOJ$2@\)].3BAP7Z'8M7B<,7%L>T2CK=E^I?))C^S/[! MVJ1/\'TN#K(X@R!S4ZJL,UMB<=@U8G>4'=X;;^]2JU"MNJM;4T6UM>GOMV%T M>!U<]9?BBWG_M/C U(K7FL1:DJM_.:),J_ZZ[CM&-MT5N92&+MRNN:87#BIK M0/.EE&;7L0L,;Z;Y?U!+ P04 " #PF;L5J;=W$=':^82M^ MQ^VOFQN-;]/!2B4:+HU0$C1?7DSF].PR<^O]@M\$WYIG8W"1+)3ZYEX^5Q>3 MP 'B-2^ML\#P\< _\+IVAA#&]][F9'#I-CX?[ZS_[&/'6!;,\ ^J_BHJN[Z8 MY!.H^)*UM;U5VT^\CR=Q]DI5&_\+VVYMFDV@;(U53;\9$31"=D_VV//P;$,> MO+$A[#>$'G?GR*.\8I;-SK7:@G:KT9H;^%#];@0GI!/ESFK\*G"?G7U4JMJ* MN@8F*_@L+9,KL:@YS(WAUA#X!?/B^)[AE#DYGUKTZ/9-R][Z96<]?,,Z#>&+ MDG9MX%I6O'II8(I0![SA#N]E.&KQBI>G$%$"81!&(_:B(?[(VXO^5?QP)4Q9 M*]-J#G_,%\9JS*(_#_'0>8D/>W&5=68VK.07$RP=P_4#G\Q^_(&FP4\C,<1# M#/&8]=D=5FK5(FBUA+G+X$!Y2+-PNNO63'N,FN56N0:W/B%81+5C-9<@(+OA)2"KER43PY M"T= BXR$>0SSJA*NAM&'5@TL6H-X#3HMO[?"])_BA$1%!%BK6(D2:T=K+LLG M0,VDJ9GO 2&)PAQN><.9TQ2;B^U,;K1Z$*[1L!HVK2[76.AHOE2MM X3:]P( M8D(SNL?,,6?V:,.XP,\IC"B:#(HFHXJ^2L1#$K[;!.MK66(METB5,)9[X!85 M[53#&,]>BN75.3Z"EYI]U IYGY=EV[3(*9K9\>T:Q5?? W%R_L UMG3'-)X+ MCL!YH[05?W4RW' M5 5W[<*46CB/FG<*F;78&*=\D) 0I3J"XR@D09&=X# + M8_<;D3Q)(#U-/?%8H_P!SY8-NK6\7$M5J]43Q#G)8PR )B1-BQ,,*8$H(G%> M0'(:]#O13Q*3 "5%/W%&LC1U?B@)HL*#R$@4Q^B*#JY>,A3^?PSE :&!!QZ& M)$P2!_P8L],]DXRDF:,H'Z4H("D-X+@@112? (4()[(,^8GW_(0!R2CM=:!Y MT;L)W#//292$Z*9?/Y+XZ9#XZ?M;V7-"KA_Q&F+\_+N*8]3-X?[VPA_?^Q/_ MK*3_U/!\UN /A8/^D/*44)JZ <6$S'T>$AJ.]I5LH#<;I??:6-'XI)Q+V6*O M.\CQ+>\2UZKW<3WJ\^VSA ]@EJUU)RSK,+%#O.@]IM=ZB)=RO*;=]0WJ.H*G M/G'C+(C=. 6*=1\$;IRY<8A3.,ZQ-9 B*0"1XF5W:5%2W%70".Z5190[S,_! M[EO&(:VFSVYI#=X-3C- M\"S0W?VS>[%JX^]\"V7Q!NF':[RR<^T6X/>E4G;WXAP,_P3,_@902P,$% M @ W)A46-V$+'N/! OPP !D !X;"]W;W)K&ULG5=M3^,X$/XKHQQW JG0O#5MN;82L*!;Z= A8'=U.MT'-YFVUL9QSG8H M_/L;.VE:H 1VOR1VZIGG\3PS8W>RENJ[7B$:>!1YH:?>RICRM-_7Z0H%TR>R MQ()^64@EF*&I6O9UJ9!ESDCD_=#WD[Y@O/!F$_?M1LTFLC(Y+_!&@:Z$8.KI M''.YGGJ!M_EPRY-:[XS![F0NY7<[^9Q-/=\2PAQ38STP>CW@!>:Y=40T_FM\>BVD-=P= M;[Q?N;W37N9,XX7,O_',K*;>R(,,%ZS*S:U<_X'-?@;67RIS[9ZPKM<.0P_2 M2ALI&F-B('A1O]EC$X<=@Y'_AD'8&(2.=PWD6'YBALTF2JY!V=7DS0[<5ITU MD>.%%>7.*/J5DYV974@AN*$H&PVLR.!"%H872RQ2CAH.[]D\1WTTZ1O"LA;] MM/%[7OL-W_ ;A'!-KE8:+HL,L^<.^D2R91INF)Z'G1X_87H"4="#T ^C#G]1 MN_/(^8M^:N>?N$YSJ2N%\,_97!M%Z?/OOC#4(/%^$%M2I[ID*4X]JAF-Z@&] MV6^_!(G_>\<6XG8+<9=WNX52%FX'<@%_(F4G7#Y2O6K<1[73V7ZJ]RN$]!E* M[E"P1H$U4H"8AH7,J;SU*?R-3-62 PF&8H[*B7;("S K66D*M3YR&MI':!\! M_%6B8C;ZC?M4:@,'$/4"6F;?_FC8O,?PE2ENTW)W;=0;#@-Z#H8)/9/$I]5) M;S2.W3M)(O<>QF/H"/N@#?N@,^QWU!FSB@A0..ZJLLS19A'+X8+I%5Q1(.!S M4?=+VWAN,6>&XF%D+9'>ITTGXGYMGD&G%GIAH?D.M-I"NV!I6)-8NWI]3"2W ML9+QC P5,"$KFPV\2//**NW,$ 1!4,%81MM,R4DKGG-CBVHK#O3P.G^ M\DL(W]P)A]DQ>R!O%&J2FN*_#;-!)2 Z">")FH"FT;@9O;+,J+O:' )BA1"? M^/!K_>S09-AJ,ORP)E>5L1W\FEB*2L ->ZK[_1=J4&HG'=]6HA-K?UV>F=?A M[(&L%"QJ.J*A4V[H5([.:Y%>-M?7]1F[ AD'OIT,;*U0RZ.A[8)CRG,:#BGE MP_'8#D= :ZBET^UM06(!-S@.PZ/&OJO@#JP?/^SLO*-6V]$[F>^NCE;:VS;Y;BI%M4^H+T_T2VVX<"70 M+KGG%/SE/J$[@7]4Z&UEE!OD] 4Y;,FU2XPC]U'9*:J#**EUIW$P2FKADUX4 MAXTN[_"@$Y6Z;+*_%?9W+I4"U=)=G36XNJWOE^W7]G9^5E]*M\OKJ_TU4TM> M:$J.!9GZ)T,Z[51]7:XG1I;NBCJ7ABZ\;KBB?QBH[ +Z?2&EV4PL0/N?9?8_ M4$L#!!0 ( -R85%C?;%$:LP, "L( 9 >&PO=V]R:W-H965T4.5)5A$D6CL&*\#N939[N7\ZDPNN0UWDM0 MIJJ8W%YC*3:S( [VA@>^+K0UA/-IP];XB/I[[^3.?!9$5A"5FVC(P>KS@#9:E)2(9/W><07ND M!7;7>_;/+G:*9ON.W0 X_< R0Z0.-W^(*?REFDVGTJQ 6F]B)X;9/RJ"6]Y833\T[KD';HX@2^BUH6"NSK'_) @)&VMP&0O\#HYR7B+61_2N =)E*0G^-(VX-3Q MI>_P[4+\=[%46E)-_'M MP,$I]OE-R90"L8(G:C)EY!9B/14)U(6DIAU@7A,JR69-AG'#;D Z1N)4JZ M0-0E?.0UN0NCB$M]@KO5"EUG ]4_PMUKPR5S#>_VCP4C_ ]6&H3%6X!TF\'# M6P!=KS=S#M]K8Q_GK&JN/#7MO','[7$')[U0]+:'W$&?C3:'B"2*)W#O/PI\ M%2\^9F?M[)(8SF 8]:(HHD4RZ8UB:TFB7CHFQW#A?8[PD'5AUG1[V'6RYQA, M>I-) N,]-&FA7>>_3+FUJ\$>ECB4Q9S!X(),8WBBG"H7;Z<*VKPNM]"@Y"*' MC2VK3N[^02;]S7"8Z8.<]@!?,VRT/\'7#/'M#F25,+6FQ+OJ<(I=O%^-8Z." MV\%D)X_G'\9)G%Q!.HI[%X,AQ!>C7ARE/F>'KIF@#W'6(BCDM)?$0__=!VE$ MN45)XXIJFF?HA'7A7F07'\>3_F#D%J-^%,.Q*R+L7. 5RK4;4XJT4*C^+F^M M[21<^ 'PYN['Z!A?9F0< + 4 9 >&PO M=V]R:W-H965TR6"QV \ML241IDAM-V7'_WY?-779EJDL=CZ(9W>=K^J5>/[0V#NW M,*9E/Y95[2X&B[9=?1B-W'1AEMJ%S#-K[%*WN+7SD5M9HPN_:5F-1!0E MHZ4NZ\'EN7]V;2_/FW5;E;6YMLRMETMM'Z],U3Q<#/A@^^"FG"]:>C"Z/%_I MN;DU[1^K:XN[T4Y*42Y-[F@=W<,W(E4G3W-'- MU^)B$)%%IC+3ED1HG.[-)U-5) EV_&EVU-\W#W\W&H9CD39O*^2-[Z-:FT8!-UZYMEIO-L&!9UMU9 M_]@$XF!#]MH&L=D@O-V=(F_E9]WJRW/;/#!+JR&-+KRK?C>,*VO*RFUK\;;$ MOO;RMFVF=^^OX%?!/C5+)-MI'ZZSW_6D,FYX/FJAAA:/IAN15YU(\8I(+MAO M3=TN'/M2%Z9X*F $^W9&BJV15Z)7XF7)UYQ>:&LV M3E_K1X"L96-K=3TW_OI?XXEK+0#S[V/>=[+5<=E411_<2D_-Q0!EXHR]-X/+ M=V]X$GWLL5SM+%=]TE]/UYQ!.Z:KJIGJ M%DO*FK4+@Y6U:ZJR\,](\PD:A,G:#F&@[ M7?B%!?14S!3&+&>:!R M[FW,!&Q3<1!'&2ZD#&1.5@OHA@4G$S!Y9', MF7MX\JPQK)5I>LN+?]W5+UR MUJQ(H0]ID*NT.T>2; RB.&77MW\XW& MMR[:'4E!_HM,?MMDX^S-D/WIJ08Y'=\#;W/#OJU;E%M=$()U^S35R&C$R!VC3( M\VC(LH->T@^];E2B#CZ&,<++ MC:E\MVT;=HA3=PR?O;J.X_-W=/66Y@ VH?F-^3?4TO7>G/+ '+LWIWD&[9_M M1@%:W-2L6H:&S1P1-0.AZ!=-ZA==6G:OJ[6A\&R;U;UQI-_WJB3ISGGB>Q9U MJ*]U:TMPT/3E3K,#!$P2(F4XD'F@T'94! *EH!"9+RK MU_=Z4Z^SO>U[+P\DSG>5$J+Q*AZB04H<>1^HTAVHTEY0O>@>/I+?O377L.9V M:\VVY6P**&!CA]G]=7SUJR4H[?WV0P'-#,]=?C!0CB262P^DIILL:*2@'1WE MK1V%FIY?51HT>3M=-$3EFQZZLN64%BR;PM XW2[\VJZ5THN'Y_G0>\=>1^DS M_/VCG!F/W$>L!X>J$&062OP4^]Z@#,J*^KC,V5LT%CK$.'Q&=R\,YH/'TE0% M>_\B6,I$ Z[L"#0Y>G3^.W4ZAHT%2S^?6S,G9 MYQ3XYB7Q>6B>IK]49H$B8A AQHTM(4BN H$YCT<\Q(#RO6L=9 LFKB6 U+6O M$N#P9 !Q29(/BR0$2(R1&.U42BCO07>^0W?^LRSJI\R^ M&:Y7TNLSG)?[ZNSVO_%>#^>-E\V:V)_>-)4N(\ M1>-+U\\/%R8R2!3!,. 1AJ0X2$72%V<>[;\E1+V1/F"2+UT+IWZ,N'_J,.-' ME),\/:<,:W=\ZSP<=O2)33] + -*ZB9F7=4V(W)+2;&8L MW8.=RZ8X()P]B?P5G($&OOL=&ULC5=; M;]LV&/TKA)<.-J#:NEO*$@.YM%N!7H(DW3 ,>Z EVB8JB2I)Q4E__0XI67$Z M6^V#98J7\YWO3IUMA?RB-HQI\E@6E3H?;;2N3VC[S1 M;N*6KS?:3,P69S5=LSNF/]Z\WY*!F1G*UH4^A;L?V#=?I$!B\3A;)/LNWVNB.2-4J+LCL, M!B6OVG_ZV-GA9P[XW0'?\FX%69;75-/%F11;(LUNH)F!5=6>!CE>&:?<:8E5 MCG-Z\:[*1,G(/7UDBHSOZ;)@:G(VTX V&V99!W/9POA'8#R??!"5WBCRILI9 M_A)@!DX],7]'[-(?1+QFV90$GD-\UP\&\()>T<#B!3]4E%QSE15"-9*1?RZ6 M2DN$QK^'=&X1P\.()EU.54TS=CY"/B@F']AH\>LO7NS^-L W[/F&0^B+.Z1? MWA2,B!6YD>*!VS1 %I)]EQUB/8A[F/6G1I+ZA1#>"M$V+K94$;S6DBN6&T)Z MP["K0$;S:FV71,4JK4[)WXS*-@8(/,C*)9/6BV->X91H%*UR-;%.-0_?/#QR MU4B)\^0MRYFD!3G!M./%"09>X"2)9P9.%*7D3E/-2.CX.!4Z7IAB/DE=@A1% M E;$=SPWP%R*.<^)/10\^CIS0CR9D[#M1X$X,6!IVP.,@QI&<2.!WDG)''2,"0#WH]Z[T<_[?V]R'WS MB&*L&")X!:6@TTJ*DER4HH'QR17\T&C,+I\(K>OBR3CG\_1NVJN^!W5KU-4" ML<7@Y&[E4#@-$S61\QPKA'4$\Q<$3;C0CF1VB*398(FN.J)[D+(C6K=$NQ5$ M)$534"B^_PO(XU'X7=A9D0J.;[203T>%^][4):^^^X/!T 2AZCAG[6C2\3$* M&;5/G_'9BWQR2,4LZYU :SD8+-,DFB*NIS%^D743+Y&K=C-:0?:E[6)V!?8W>&D&W^"2R1Q(=>; M^OB%Y(W5$ ![E@V@+DSJ8]LKI)'Y&\B>N,^>>#A[0):O>$:AU%5?G(P1^V)@ M;'NA%,/T^#VG2UYPS8^TOF%A]P@]M2

R%0(#_RG="]P**M;.."XED\V2)I M3&RWL8QZ^G-%]/JXA(\FU&J$F8U+M+U6:.?KC$KYA'J_I3)7II*YCH]>?D)2 M)YV[*(J(N=?FUI._C*==GL=.X(8D'/'=>?@&*5>%V@#-O:=N1OA&;H)^5T: M PQL#B-G'D(56&;/-([0)XB1SA/N] #F;UP/@ M)R0,T+E,IPA"QPV"@X[;-TV_G@EE <9HC/'<-^UG##/$*8J O4F_%JO7C6([ M4897$MHF%YC.=J0';HAY+S;^U$V,_@:],/0&\G_B3 :ONTX,4-S96 M2-UT9X,?GHG0EQ-3M4(/QL#ICT>LMG\*ZB8(I+E5?(YVZT\.%8K9WDVX9')M M[_NFZ:#WM)?B?K;_I+AH;]+/V]OOD0]4KGFE$*\K'$4A0R.4[1V_?=&BMO?J MI="XI=OA!I]%3)H-6%\)H7[^5;I1U,A6GBNA30+K[)V/?-]DU=8,W.JUBCI2ZETS2QM]/^>D?_T,1.L2R9P0LEOO'"5@MOZD&! M)=L(>Z>V'[&+9^QXN1*F&6';VL;O/,@WQJJZ(<];9/0*,HS@1DE;&;B2!18O 3[IZT5& M.Y'GT5'B)>:G$(P;"'26H(="HVE$(@&RB5H KF ,5BH*8DRB%03@*HG3HYF1,=I-U:MFVI?*DN] MHUE6U*Q1.P/Z7BIE=QMW0=_^L[]02P,$% @ W)A46.SX@?V> P Y0@ M !D !X;"]W;W)K&ULE59M;]LV$/XK!ZTH6L"+ MK%?;J6W 3C*L']H9<;NB&/:!ELZ6$(K42"I.__V.E*S8FV,T7_AZ?.ZY-YVF M>ZD>=(%HX*GB0L^\PICZVO=U5F#%])6L4=#-5JJ*&=JJG:]KA2QWCRKNA\-A MZE>L%-Y\ZLY6:CZ5C>&EP)4"W5054S^6R.5^Y@7>X>"^W!7&'OCS:2?RMS4\R\L0KR+&\ M98;-ITKN05EI0K,+9ZI[3>1*88.R-HIN2WIGYI\I[A]%)BN$%2I8%TPAO/O" M-ASU^ZEO2(45]+,.;MG"A2_ !2%\DL(4&NY$CODI@$_<>H+A@> RO(AXB]D5 M1,$ PF$87<"+>H,CAQ>]@'?'E"C%3A^9^]=BHXVB_/C[G,$M7'P>SM;,M:Y9 MAC./BD*C>D1O_O:7(!U^N$ V[LG&E]#G-[*JI4!A-,@MV%UCF,MFVBZ9+C-@ M(H?;DC<&4='$)VRI5,3'>V[5-JC<07(V';B)Y.Y'K#EEFMZ/43?&DO0S@ M0K(G?;(G%Y-]30TG;SC:9%H(4_[JV-,WVR:^M7#=6GCWE/'&ILM6R0IN&,\: MWF?A:TOA(J672T$T+D])X9&_H9:&JJ-D_#\Q,04S;>+C"7=CB^J4_\7:818* M?W0U=.*B/=V]NJK^5SNG;N_81RG8W#D?8_^H]5#=[5R#U60_U6;;A?K3OH&ULA91M;],P$,>_RBD@M$G5DB9=-TH;:=U MX\5$M0T00KQPDDMCS;&#[2SCVW-VVM!*77GCQ[O?_<_V>=XI_60J1 LOM9!F M$536-K,P-'F%-3-GJD%).Z72-;,TU>O0-!I9X9UJ$<91- UKQF60SOW:2J=S MU5K!):XTF+:NF?ZS1*&Z13 .M@OW?%U9MQ"F\X:M\0'MUV:E:18.E(+7* U7 M$C26B^!J/%M.G+TW^,:Q,SMC<)ED2CVYR>=B$41.$ K,K2,PZI[Q&H5P()+Q M>\,,AI#.<7>\I7_RN5,N&3-XK<1W7MAJ$5P&4&#)6F'O57>+FWS.'2]7PO@6 MNMYVD@20M\:J>N-,"FHN^YZ];,YAQ^$R>L4AWCC$7G)(Y+=RD/5M,N)S^;WJ/E&NF4+5PK:37/6G=:!DX>62;0G,Y#2V&< M<9AOD,L>&;^"',=P1ZC*P$=98+$/"$G?(#+>BES&1XDWF)]!,AY!',7)$5XR M))UX7O+_I)36P,^KS%A-C^37H8Q[WN0PSQ7.S#0LQT5 E6%0/V.0OGLS MGD8?CJB=#&HGQ^CI Q5BT0H$5<*CLDSLW118!;9"6 DF#RD_RCZL_$NKB>H" MY7M/HD.-P R42E MFQG\0*;[2P:Z(JPSU/Z:3CC)JE1KF"S,J;\UU\2N&_SW\)T-(TOJ#\?)9=3ZB>CB_<1'#K#<.?)UZC7OK - 5MI^]<_K Y_QU5? M,O_,^X_GCNDUI_ "2W*-SB[. ]!],?<3JQI?0)FR5(Y^6-'_A]H9T'ZIE-U. M7(#A1TW_ E!+ P04 " #F:U#80)UT78&V- M.-E0#/U 2R>+*T6J)!6E_WY'4I)MU/;VA1:INX?/8^GT5C1P@%9M8A,/IYQEL4P@$1 MC6\=9C199WS++Y5*L6M+,F-/?@ MI7IO(L>E2\K*:GK+R<_.WZ/::%:7/(-[&7+L@O7JD:T%FE^FL:5+G&F<=8"+ M )@> 4Q2^*"D+0V\DSGF^P QL1LHICW%17H2\0ZS$4R20$WF20//%X MDR-X#_B,LD$HM*K@EKAJ*@T*NRWAU@<<-?Q]LS;^_,NA" 3\B\/XKHVN3WD0M [RNIUU\@Y2L3\HV"-W'.TX7]6X;]W:\)PSS;&GO4>Y1>VO+Y2@ MKZ&YAL_(=&@4H#+':DVUUY>Z6U*W)-LL]E%[)G M:SI,A!]+>JEI^FC[W>?ZW;>&US0/+'RD8?6'RGRJ*!NK/NK![E-1\ R# 4DR M\&FKZ4ER2R)6EGP/%OYIHGM\L.=S#I((B2TALT](!4)B('0HR+ZD=BKC2#G< M2XM:>APFH#[(!Y)+2G R@;-#N8EWA@6UU\:/1->F-YST""S(=3SZE:*GPQ@,&ZMJ/WK6RE(O^\>2_CF@=@;TOE#*]AMWP?!? M9/XO4$L#!!0 ( -R85%@_>$($70( &X% 9 >&PO=V]R:W-H965T M[0.*E4QII+\"%>\X]%W28]DH_F!K DJ=&2#.CM;7M)(I, M44/#S*EJ0>))I73#+(9Z'9E6 RL]J!%1$L?G4<.XI-G4[ZUT-E6=%5S"2A/3 M-0W3SPL0JI_1$=UNW/)U;=U&E$U;MH8[L%_;E<8H&EA*WH T7$FBH9K1^6BR M&+M\G_"-0V]VUL1UDBOUX(+/Y8S&3A (**QC8#@]PA*$<$0HX_>&DPXE'7!W MO66_]KUC+SDSL%3B.R]M/:.7E)10L4[86]5_@DT_9XZO4,+XD?0A-WU/2=$9 MJYH-&!4T7(:9/6WN80=P&;\"2#: Q.L.A;S**V99-M6J)]IE(YM;^%8]&L5Q MZ1[ESFH\Y8BSV2T(9J$D*Z;M,[G73!KF[\N0HWN6"S#'T\AB(9<>%1O212!- M7B$=)>1&25L;\E&64+XDB%#A(#/9REPD!QFOH#@EZ>B$)'&2'N!+A[93SY?^ M?]L_Y[FQ&J-?^QH/M./]M,Y!$].R F84+6) /P+-WKT9G<#Z+'A]BS MNV IDR5RX3_5!WOVJOW2:%/]6L37L5"(]:"#,D$H) M-+>9D!_ ='AS@B\&30[:O]H1EXA5G6&R-,?^$=V0N&&TR_BRXEN2G*1Q[.>+ MLS"/,=YWE]&.!QK0:^]T@X2=M,$.P^[PF&+S?X 4$L#!!0 ( -R8 M5%C?>0T>[P( +P' 9 >&PO=V]R:W-H965TQP=MH-\<=C.VDH MD$5[2>SSW7??_?!Y?I"X4SF )@\%%VKAY5J7E[ZOXAP*J@:R!&%.4HD%U6:+ MF:]*!)HXHX+[81!,_((RX45S)UMC-)>5YDS &HFJBH+BXQ*X/"R\H7<4W+,L MUU;@1_.29K !_;E6 MZ'SA33V20$HKKN_EX0,T\8PM7BRY.Y8IJ&LU1'@A:;8-F%RY49VW(,6&+LM%H3IFQT]%[$("4 MDS?DCB)2FR+R:@6:,JY>SWUM7%A%/V[@EC5<^ 3<,"2W4NA1O -]P M:PF&1X++L!=Q!?& C(9G) S"$5&0F8[0I 1DL@]^U,8_(A*P1E'%8"V1*;IB@(F8F8QLC!$M&D6]76Z71--CWKHS5 M!,Z["=A+=ZE*&L/"*ZTOW(,7O7PQG 1O>\([;\,[[T./[JIB"VB)(Y02-=UR M.":QBVN--G%H]C[OH^'G<=I2FSZW MC*E)J*UBG2]%?O5D;OI?.<-N'K.6QZR7QT;+>$=*3L6_1+K<]V--2.%&55?E M_).)6@!F[MU0IHDJH>OAVDK;I^FJGLA_U.MW[99BQH0B'%)C&@PN3(]C_5;4 M&RU+-Y^W4IMI[Y:Y>5X!K8(Y3Z74QXUUT#[8T6]02P,$% @ W)A46#8< MT _3 @ > L !D !X;"]W;W)K&ULM99K:]LP M%(;_BO!@;+#5MUS:+C'TMJW0LM#0[HS,II7K42P!#GC,N]-19&I.?NJZ.EY!1?21S$#B32I51@T.U M<'6N@"954,;=P/-&;D:9<*))]6ZFHHDL#&<"9HKH(LNH6I\#E^74\9W-BSNV M6!K[PHTF.5W ',Q]/E,XNZ'-J!:\9U!J7>>B4WE M0@+ M"%"4DX]D7I\+D2FYTH9API"0>PUIPD"'O M+L%0QO7[B6L0RDJ[<0-P7@,$!P N(3XBH?^!!%X0_AWN8BYM0D&;4%#I#0[H M70L#2E#.UW@X*W1=CFEHF9J2*MB'UREG/XI3G=,8I@ZZ7H-:@1.]?>./O$\= ML&$+&U;JX0'8.7YD2<'!EO8LCF4A#!,+,I.]L ^ M:-D'G87>FJ2H3<(W)LEW30(;D^SC[]XA)&N@2G>P#EO68:?2A=RI]2U,6PY:E(DL+)9@I%)#? MY)8)EA79/L9.Y5?6^*3E/NG5'R<]L/O>]I+Q>G?("UL,7[2(OW,G^O]H$OI\ MR"3=TJ^M]/;V\X->?>+W<1WZV_O0[[RR_H]1NK<8'S:*N]-'V9[TEJH%$YIP M2%'*.QKC#:'J-J\>&)E7K=6#--BH58]+;(U!V04XGTII-@/;K;7-=O0'4$L# M!!0 ( -R85%@@IV0;QP( &(+ 9 >&PO=V]R:W-H965TU#L8UM4ECQ) M;EK8CY\D)TX&C0H9?K%U.Y^^<_1)YTS70CZH$D"CIXIQ-0M*K>OS,%1I"151 M)Z(&;F9R(2NB35<6H:HED,P952R,HV@<5H3R()FZL85,IJ+1C')82*2:JB+R M^1*86,\"'&P'[FA1:CL0)M.:%+ $?5\OI.F%'4I&*^"*"HXDY+/@ I]?XH$U M<"N^4UBKO3:RKJR$>+"=ZVP61)81,$BUA2#F]PA7P)A%,CQ^;T"#;D]KN-_> MHG]QSAMG5D3!E6 _:*;+67 :H QRTC!])];?8./0R.*E@BGW1>MV[604H+11 M6E0;8\.@HKS]DZ=-(/8,\/" 0;PQB!WO=B/'K]--2&CT4-T\W>E^W>\8&]YY">H '^@.(H'OQK'AHW M.E_BSI?8X0T/X"V;E4HE78$T>F'$GKHJ::W0'W1+.:V:ZB6.7DQ[*HG[H ?NPX[[T!OMG4B:5B1L*Q*Z$PEQ(GF)NA]\@IZ!2.6A M.>IHCHX6!7DZ) HOYI&!'7>,Q[V*8MP#]TG'?=*G*/S@.'I5%:<=SU,OU!P> M34*J#4\-:MNQ=5E75B=_ 5!+ M P04 " #LDW M,@H3]C$E8A/'-/UYPR*^O>J8G<>$3^'=2F8)W>GEFMZQ6R:_K#^FZJR[HRS" MF"4BY E)V?*J!-8@"\AS? W95NP=DZPIWSC_GIT$BZN.D=6(16PN,P15 M'_=LQJ(H(ZEZ_"BAG5V96>#^\2/=S1NO&O.-"C;CT3_A0JZN.N,.6; EW43R M$]_ZK&Q07L$YCT3^EVR+O*-^A\PW0O*X#%8UB,.D^*0/Y1>Q%V!93P1898!U M;$"O#.@=&] O _K'!@S*@,&Q <,R8'ALP*@,&!T;,"X#QL<&3,J 22Z'HO_R MSK>II-/+E&])FN56M.P@5U >K?H\3#*QW\I470U5G)S>;(1*$8)")@OQAKQZ,>X-^^^RU/=A%&61 MEUVI*I6AN_.R GY1 >N)"I@6><\3N1+$219L40=T56MV3;(>FW1C:8DVFY^3 MGOF&6(;5(U]N;7+V\G5+Q69ZS"U;*XSQ+,8^ F/VGL4XIV"<+Y_(6?GUM\%< M/>S#7)X3HY_#+$V=/#WFCTVDZC1Y%N-C^BLX'O-$;6IRZNU^(;V]:9OGIA#HUW;3I%PFPD MS$'"7"3,0\)\)"P P6I:[N^TW-?1IQ[GBZT:JMLD6T0.\LCL$>E^:O4GYFAX MV;W?%Z.V@%/%B(0Y2)B+A'E(F'].@4B8C80Y2)B+A'E(F(^$!2!83<+#G82' M^/OY$*EE),Q&PAPDS$7"/"3,1\("$*RFY=%.RR/]<,PEC,MN6QM-4X=U9 P%PGSD# ? M"0M L)K*)CN537YYEC)IB*S?'PU&!R*;-$0V,"QC<" R;2U.%1D2YB)A'A+F M'_7]!Z B:^HQC6I)T]#JYX-1,_3RF9*%4C:3:4YD!I+I3F06D^E!:@:'556Y6JK5]_@M3'GJQ> M),V&TAPHS872/"C-+VG[3PSFX'"&%Z#*K*NRLGA,[:K[]%H()@6AV4B;'IJ0 MI39[C79,#ILQTQ=SLN2@7@V4YD)I'I3F']-5 :K(NN(J(\;\=2?&;*[=#YM2 M@QHQ4)H#I;E0F@>E^25MJ.NJ %5D76J596/J/9L@D2S]G-(%([<_1?;H2()D MWFK9Z$DGWX"AI@V4YD!I+I3F06D^E!:@:'4M5]Z-^1O,&Q/JWD!I-I3F0&DN ME.9!:3Z4%J!H=557+HX)L7'TE)-U##5RH#0'2G/-ILO4GYB'MVD/6J@/I04H M6EV@E>UCZGT?F\U31@7+7O5 MR^K![W"XK,KALO0.EYJ_%2H^6Y1Z?@T1M+[84P4-I=E0F@.EN5":!Z7Y):VV M <!(TJLR[HRNRRM+;#U)OQ.&;IG&5+$ZW*A!I;4)H-I3E0F@NE>5":#Z4% M*%I=P96Q95GXE0D+:GA!:3:4YD!I+I3F06D^E!:@:'555\:8I3?&CER9T%-. MUC'418/2'"C-A=*\DE9;YQ@T9F ^M- 1:L+M/+1++V/!E^9T)=WLI2A+AV4 MYD!I+I3F06F^U73IS*9-ARJSKN3*IK.>L^E^TYP.ZNE!:3:4YD!I+I3F06E^ M2=L?Z=^VO%6#*K10='=OEP$U5[O+MZ@0:G15 VWQW_F[U-TV&-?YY@\'Z;9Y MX12;65288F^-]S2]"Q-!(K942.-\I!J0%MM5%">2K_.]#+YQ*7F<'ZX856-[ MED%=7W(N'T^R G:;ADS_!U!+ P04 " #MK$";\>K(787@Z'?+ZFFY!?L"U-Y#=+EFY"(0_3U9!O4QHN M\J1-/"2&X0PW890,)E?YN?MTI\BOMMLPO3;+8W9X_4 #YY/?(A6 M:Y&=&$ZNMN&*/E#Q:7N?RJ-AB;*(-C3A$4M02I?7@QM\&9AY0A[Q.:*/O/89 M95V9,?8E.[A;7 ^,[(IH3. M=F86@RW,7B WM\2XL.V1G>G,4\_XL>BUAC@.8[+MBF M2)97L(F2P__PJ2"BEH"M%Q)(D4!T$\PBP6PGV"\D6$6"U4YP7DBPBP1;]Y*< M(L')N3^0E3/MA2*<7*7L$:59M$3+/N1RY=F2X"C)1M:#2.6WD=4%.&I_#I,%NA=%,ZB M6.;*$/G];I.=%W5()"^.HM<>%6$4\S>R@4\/'GK]Z@UZA:($?5RS'9=(_&HH M9*>R2QO.BPYXAPZ0%SI@HO*;TE2D2/ MSB^0B<\0,8C9^0)>-0R7 MV3#<9\,P&X7A811F@R^N#;ZP&)67/5=^>VC)ZF\I>X)?\FTXI]<#^8CF--W3 MP>377[!C_-:G(228!PGF0X(%0& -[:U2>TN%/OF=L<5C%,=]6AXR[3PSFSSW M$V*-\.>C/^0Y$3VA MMRQ>1,D*W5Y\ONC33(ETK&:08!XDF \)%@"!-;0=E=J.E)-7W]H*_?U.GD-W M@F[X/WTBCR!%A@3S(,%\2+ "*PALEN*["IOX&G(UV@;1GU+SUNW\_@9F;;M MMF8IMS,5]$1YRLLXEGY(L (K$'_N*1__-,6B&/(6P\2S(,$\R'! B"PAO;8 MJ,RK\=V;KT_)(JTQ[[OVN'7?:45Y6E&^5E2@[LZI=-6\/E:O#N=SMI-+0Y32 M.8WVX2RFO>SA3E\P<49M]GJB3&O49D\'R]>*"M2].Y4]4K%'--?69_(YHL>D M$O'81PHHFE>@U3D_=XVV,)!-!E!H30&K6@)6VM7)GV)-TV)FZ%7+[#!B.I;1 M'O?=*#)V<7O05:G6RG^QR' M;#* 0FLJ5Q4#L+H:,-VEJ92MO@+J%:WKDL]-UVPO4WO#',-ICWPM-%\O+%#W M\%0&*W>.U?:\/O;GFFR"VG10-*] :Y!.3-*6!M2!0Z$U%:P\.%:ZOXE'ES3- M-BI2NJ?)KG^:'G5I<2R"VS> 5IBG%^;KA07J[IU*7^5NL=K>EO1%R9QM*!+A M4_T&.$,)%;V4=JWO^V9TU/Z@/A4)K[OA51I2HC>A')L+XN!)$GZRDZR*)ZQKM M!U%?F&G:9NNNT4/S]<("-0.G,EQY5_(=[UJ[:P00VT!^LA %$LTC74=L6U9[ M$07:9@"%UE2X\M=$[:]5^WVD:U8MJ_-,F?:$V08Q[/:-H87FZX4%ZFZ=2EOE M:HG:U6IO^:EQCA[NH#O@I&N$S_O&.^CF-A1:4[C*5Q.UKWYIZP_]AQYV,SY/ MHYGTVBF-P_Q'.>MHV^LWU*T<+2NHY09%\T'1 BBTIOJ5-R?V3]NX(*"[^:!H M'BB:#XH60*$UAT!57"#JXL)=(L)D%K^GV)VMK7EX21%I>@F^N@:![IE@,PQF9G30*Z<0Z%UA2P*BX0 M=7%!,0-Z=$]CMI6/1T'GZX3%;/6M5U+(G>PI*)H'BN:#H@50:$WEJQH(^7G; M]@2T%@**YH&B^:!H 11:\X>]554UQ-2OAFA-?6J\HW_]#%KK*-#JC)];9-2N[H(V&D"A M'00=]F*ZBA*.8+F6J M<3&2O*2']V,.!X)M\_#[(&RK>4)O\#4$L# M!!0 ( -R85%A@#.R:D ( %8' 9 >&PO=V]R:W-H965T0/D9A\ZIUZ+(&4U]+9F)-]N>(8)#Q,F$F!S)_];Y#2&O);J@,R#[,P7 A\2,=]GUQ MR;X2#2.>V+62B2@S-NO=]R:^H1 M43]NPIGMP@F/A#.'N,<&_4\L#,+!G^X^ M9:9-3]BF)W1XPR-XJWJ-L19KT-2!DKOLY*+"0\PZD>SE.L.*QS#UZ/8@Z UX MT?MW_5'PI8/GH.4Y<.B#OR@C^WE#.K8P4."O0X0';T!XV!(>=B;VM2OJ75=( MUQ745>*UE[CKI4/4N\%/V3-PC1TT3UJ:)YU(<]C0W*J(IH$X+Y54V?,A/ITH M_YC*4>W]O3-H7YQO7F:!I)R$EJ* WIBKJ MW13?"495;G*NE:$Y[)8Y/7R@K0'MITJ9%\$.X_8IC7X#4$L#!!0 ( -R8 M5%BNJT5+$ 0 $47 9 >&PO=V]R:W-H965TYR27.]TS_EVL"9'@9YY1,;/64FZN;5LD:Y)C<<4VA*HK M2\9S+-4I7]EBPPE>E* \LQT( SO'*;7FTW+MGL^G;"NSE))[#L0VSS%_OB49 MV\\L9!T6'M+56A8+]GRZP2OR2.3GS3U79W;#LDAS0D7**.!D.;-NT'6,)@6@ MC/B2DKTX.@9%*4^,?2].WB]F%BPR(AE)9$&!U=>.W)$L*YA4'C]J4JOYS0)X M?'Q@?UL6KXIYPH+QKNI#KF1598$&6>)O)![9_1^J"_((O89DH/\&^CH46 M2+9"LKP&JPSRE%;?^&ZY *\&>*4R52FE#C&6 M>#[E; ]X$:W8BH-2S!*MRD]IL>^/DJNKJ<+)^0/9$;HEX UXK'8>L"6H%P5X M>CX< P4B. >O8B)QFHG7"O'Y,0:O7KP&+T!*P:?^8H\>2,)6-"W]\NT?%03>2Y*+?\<4KQB]<<;B87(M M-C@A,TL]+03A.V+-7_Z! OC7F%HFR6)#9!TEO49)3\=^4'+T'JV0?HDLGI:[ MN>\&$P2G]NY8BV&8Y\,H]+MA\3#,C7PG#)JP3OY^D[__B_R3+>)%ELB*RC7=!H%QAW46!229-DL2&RCI)AHV3XVRZJD,&QBZ #D=MST3#, M0Q/HA3T7#<-2-6\J+[E="%:BDNWWB19;(BL(]VD MD6YBW$03DTJ:)(L-D7641+#MO.!OVZB&=NY\+YKT_'$W%H8B)^K9:"P,.B$< MMQ$ZZAV1MH*WVVR99IGZ&R#!?^"\EY.>\M+;P2A;;(JM*Z?3RND8-U=-:4I. MDVRQ*;:NG&W7C+2MI-Y?[O %Y 8A=/H&&\:Y@8>\@<-&XF 0^>B$Q=J&%>D[ MUAN*LV>9)N)\@VD)+[XC3++%IMBZ8K;=,_+-&\QH-VV4+3;%UI6S;:B1MLO4 M&RP8-H(HA/T^<"3,"Z*)U[?72)@3A-X)=[6-+-)WLA_EFO#SG:4EN_A6,,D6 MFV+K"MEVU"@R[RRC+;91MM@46U?.MLM&VM93[ZS)8+2 W !&?6<-PR((^V.* MD2C?B_IO+?MHOI@3OBKGM (D;$ME-91K5IM9\$TY >VMWQ8SXG)NV=)4 ^8/ MF*]2*D!&EHH27H4J)5[-;*L3R3;E%/.)2&PO=V]R:W-H965T M $$AL>6F[-]I(; 6!Q&#:-/B ^. E ME]0BL8/MM(Q?S]EITR*E!DWL2VL[=\\]/M_;="75=[U -/"SKH2>!0MCFK,P MU-D":Z8/98."OA12U"&K+SPWBUEP$D".!6LKM-K)>*Q.#FHONG_U<.V)'(4GV*"1KA<3Q[@PYEG-F6#I5<@7*2A.: M7;BK.FTBQX5]E1NCZ"LG/9->XQ)%BW 'YE2S+H(GL_1,%[I%_ 4N(!+7E7D M0#T-#1FT:F&V!C_OP),]X'$"EU*8A88W(L?\3X"0F/9TDPW=\\2+.,?L$$;Q M2TBB9 2W-W-X_O2%!W?4NV'D<$?[<+EF9:FP9"Y6/A6P<OJ!&=0&#*? *$$6 M<&>?2I2#3^6'&D60LWOM(37I24V\2!?TXHJ2#0RJVH8JK]MZB) ?)H9[9,K# MYZCG<^0%HL(";0,%HJ8RDLE2\%^80X.*RWR(EQ\N<;Q\CCKNB1U[D2X[UVQ( MN<#K6 %56TIVG5&Q8@)EJT$*/*!W1GN/(=)^4W]UYDG/^<0+-,<"E2+WJ2X] MAJAT"'%7<6Q76*:3X\/Q-%P.&#[M#9_ZG<7%OCCR*CXP ^-H6S^C1ZH<:^#_ M3'RG\,?^/'7-!15DFX3-F' 1MQ.)@[S]N'^O)'&RY9C\2XH,LO!J/M1[VWX1 M/U;#B!^C8\3;EA'["_W#G]V/>[K_V<.=\80LEVX(TT2@%::;5/K3?M![W8TW M6_%N2KQDJN1"0X4%J4:'Q]1$5#=X=1LC&S?LW$E#UW3+!0VKJ*P ?2^D-)N- M-="/O^EO4$L#!!0 ( -R85%A W )IZP( .@' 9 >&PO=V]R:W-H M965TSSW>?O\UWN1ALN'F4&H-!33ID<6YE2 MQ95MRSB#',M+7@#3)RD7.59Z*U:V+ 3@I K*J>WV^Z&=8\*L:%39[D4TXJ6B MA,&]0++,)T#Y9FPYUM8P)ZM,&8,=C0J\@@6HA^)>Z)W=HB0D!R8)9TA M.K:NG:OIP/A7#M\);.3.&ADE2\X?S>8V&5M]0P@HQ,H@8/VWABE0:H TC=\- MIM5>:0)WUUOTFTJ[UK+$$J:<_B")RL;61PLED.*2JCG??(%&3V#P8DYE]8LV MC6_?0G$I%<^;8,T@)ZS^QT_-.^P$..&1 +<)< \#_",!7A/@54)K9I6L&58X M&@F^0<)X:S2SJ-ZFBM9J"#-97"BA3XF.4]$(IFD((0D*#M MZ5>"EX02]:PM%"O"5DAQI%/<>RC0#8!$YS-0F%#YP2#MV'OH83%#YV"DQ2^3(5IJ]X6#'#=-)S=0]PM1QT1UG*I/H,TL@V0>PM>Q6N[O5/G%/ M(LX@OD2>-Y1O(-7OQ8"LQ7H;T:AGW-.*=*5 MN\$B^=7U>C6XWPUNFL&5+' ,8TM_[1+$&JSH_3LG['_J4OZ?P/;>P6_?P3^% M'DTPQ2R&"[2$%6',%)NNR6? HDMVC1546*9EK2/''PZ'(WN]JZ?+RP]>O/:( M!BW1X"316[;F)-8)D[K@RP*ENN"[*-8HX>[E0\ 5^,.BF&+84PY,4 MYQ#S%2-__DTR?'5]SPD#WSU@V>7F#YTC- LT#L*^=\"Q MPVNO)&J*]D[3S$&LJEDB4TEK;<75==>D#^T2/L7KJO,#4,_ ."UW! M$E%(-63_M#I:JLV\.T!Y-VMA7Q5.8!&;P7CJN_E6B_N?5^E.11$ MW8H%<+,S$[(@VDSEW%<+"21SH(+Y. @BOR"4>TG/K3W)I">6FE$.3Q*I95$0 M^3X$)M9]+_0V"\]TGFN[X">]!9G#!/3+XDF:F5^S9+0 KJC@2,*L[PW"^U%L MXUW =PIKM35&ULE4B%<[>HE9XC7" 6PV"1N?#\0DYK3K1+^9KU>!7(&7?/P01L&G)J__B6S'>;MV MWC[%G@P)(SR%:S2%.>6<\KF]7.] 9)/MDJOCN.P3M$KB((R[/7^U[>1L6X$W2;54:U MRNBDRD$AI*9_SI(9'0BXB:-V.]S3V1 6X:!S))UQ+30^K^[ LU,5CP]J>8?C MK<-+C8=1N_>BE.AOO80%R+EK$,HD:,EU^734JW4/&KBG=V]]:'I3V4K^T92- M[9%(Y[=-G]JLR>97, Q&P8LG?-):;A1$8*(8U*1+YB>W^A#HA M3_-%+!'E+]I5L5YHH*@0DJ4U6"E(:5;]DV]U(?8 V#T"L&N _;, IP8X9:*5 MLC*M2R+)2JZM4X>3RBE"./I.D '0#1!0< MU#V2 KV]!$EH(L[0;^C^[A*]?7V&7B.:H;\VK! DB\7IVR6?O(Z^F&JAK/ &I;F-]+\46DK4'=X M32,B0>@5'T/.!!TLWBC1KR[KB<@Z.<^:G&UA?H/W3#,OBN=@K\2>T%U\4QPQXE_M4%/A5;MPRM MG^.7-G0\J:-/Q=8M1^OI^%13KPDZ5N-CVW$.EVT_;N8X?G!DW;:VCJ?V==PW M[CT\U?=PW=#<(_%Y/ M#82YMNT>6;FM\^.IK1_WG;V_LQ\(.KJUM]L-@'W*!J &[[_ZN*'G'4H;"G.] M,#P09^Z]T>O/*:K%'W5]$E@KG'4^4P2\^D)1#23+RY?\!R8E2\O##9 8N Y0 MU]>,R>>!_F[0?"=:_@]02P,$% @ W)A46/;\![I! P 0H !D !X M;"]W;W)K&ULK5;?3]LP$/Y7K Q-(!62YF=A;21* M-@UI2 C&>)CVX";7UL*QB^VV\-_/=D+6-FG' R]M['SWW7UW.?N&:RZ>Y!Q MH9>2,CERYDHM+EQ7YG,HL3SC"V#ZS92+$BN]%#-7+@3@PAJ5U/4]+W9+3)B3 M#NW>K4B'?*DH87 KD%R6)1:O8Z!\/7+ZSMO&'9G-E=EPT^$"S^ >U,/B5NB5 MV[ 4I 0F"6=(P'3D7/8OLH'!6\ O FNY\8R,D@GG3V9Q78P-@SZ\1X#OS;P=PWV>0AJ M@^"]!F%M$-K,5%)L'C*L<#H4?(V$06LV\V"3::VU?,),V>^5T&^)ME/I)=6% MQRP'I#\A="6@( K]X%*"1,<9*$RH/$&GZ.$^0\=')^@($89^SOE28E;(H:MT M#(;)S6M_X\J?O\=?WT;^QWFV?O-^P?4!$T] LL7[*M'GO,E4Q+=00YDA2<4>FAOD=#O.TXI MTAVPQJ+XTU6.REW8[FL",,$;8#/$I>@4LNG)8<466RYRCJS3PXGCHKC9STP:% M?GB^#C][^(K(T8G'<+'31"!^_K*6#%H6X:M+LI\'<%=(!: M+9>U05LM5ZEP-R['$L3,#ADF[_J8K6Z99K>98R[M];VS/];S336._*.IAJ,; M+/0I(A&%J:;TSA(=DJ@&CFJA^,)>P1.N](5N'^=Z1@-A /K]E'/UMC .FJDO M_0M02P,$% @ W)A46),L $.^ P >1$ !D !X;"]W;W)K&ULM5A=;]LV%/TKA%8,+9!&HKXL9[:!-5FQ -UF-.WV,.R! MD:YBHI2HDI3=[->/E!7)Y 5#H6\%*N70V M2E57KBO3#11$7O(*2GTEYZ(@2@_%@RLK 21KD@KF^IX7NP6AI;-:-.?68K7@ MM6*TA+5 LBX*(A[? >.[I8.=IQ,?Z<-&F1/N:E&1![@#];E:"SUR.Y2,%E!* MRDLD(%\Z/^.K:SPS"4W$GQ1V\N 8F5+N.?]B!K?9TO$,(V"0*@-!]-\6KH$Q M@Z1Y?&U!G>Z>)O'P^ G]?5.\+N:>2+CF["^:J)%FZP9%+3<_Y-OK1 '"3@\D>"W"?[W)@1M0M 4NF?6 ME'5#%%DM!-\A8:(UFCEHM&FR=36T-(_Q3@E]E>H\M5H+[0BA'A$I,_3+UYI6 M^AFI"_2[=M!;=*==D]4,$,_16.3K&U"$,OE&YWR^NT&O7[U!KQ MT:<-KZ5. MD M7:;;FGF[:,GNW9^:?8'8#Z24*\ 7R/3^PI%]_?[H_3'>U1IU0?B>4W^ % M_R/4!5HS4JJA"NCO#SH+&C0SI6Q7V,UB2)*M"YJ1A1D^@77FJ24[*<070(IN%#TW^:$C?_^ M!O$!L;=)A+WDB+\E;.8'46+G'W7\HU'^G[@B#%4G)"_!JGCTC$H0>V%P1-@2 M%86G^,8=WWB4[VVI0)2$L4R0/'-A[ 7S^,BKSZ/"^7P>VKTZ[ZC.1ZE>\Z*J MM5U[FC:"HQCG/IF)P ;E8J]?Z+T7M&@+/I$24Z$-I3CH>?"D-FWA!K-E&'K^ MD4]M85Z /;M1<=]YX-$572]CND_=<)8A6NC%8 N&K;VCFK3/F IM6';?:>#@ M)0T[VL><+<5$:$,I^CX&CS3^"HR"9'1O6$A9' 3YAV+YMP>-]RQ]Y M3E/HB3:T\UJ45-7V1F <\.RG-1':L/R^"\+Q2QIWTJ9H*K2A%'U;A$?;C?.- M.[-L!.;Q<4=@#TN.C>L>[(O-1XG?B'B@I40,L M#$T@,=+\H%2LC=02INV!J:)C>YCVX";7QB*Q@^VTL+]^9SO-"@N,!UX2^W+? ME[OOSN?Q5LA;50!H.7E9 5U;B5:U_5$FAN M057IAX/!T*\HXUXRMK:Y3,:BT27C,)=$-55%Y<,,2K&=>(&W,URS=:&-P4_& M-5W# O1-/9>X\SN6G%7 %1.<2%A-O&EPGL;&WSI\9[!5>VMB,ED*<6LV7_*) M-S !00F9-@P47QNX@+(T1!C&7D1[O28A2\RII"=D"@X)N$@C'H" MNG@]/.R!IZ^'!R]D$W75C2Q?])_J'I-Y2;$&CROR<[I46N+)^]6GO&..^YG- M-#I7-GHSVUM&86;Y)@-(RPR)M]G7J\AG'XQ"OM\8K/1J/.RV7F[TV%"N3:3E=% M,M%P[0Y$9^T&^-3.K2?V&0YV-X?_TKA;X8K*->.*E+!"RL')&<8DW:1U&RUJ M.WN60N,DL\L"+R>0Q@&_KX30NXWY07?=)7\ 4$L#!!0 ( -R85%A1YYV> MY0( P' 9 >&PO=V]R:W-H965T0BG8S=M!>=7LBP-IH(B4C"Q&_?E;"IVQ#:&]!I M?WV[TJXFE52/.@,PY#GG0D^]S)CBRO=UDD%.]84L0.#,6JJ<&NRJC:\+!31U M1CGWPUYOZ.>4"2^>N+%[%4]D:3@3<*^(+O.3 M@FY@">:AN%?8\QN5E.4@-)."*%A/O5EP-1_;]6[!-P:5/FH3Z\E*RD?;N4VG M7L\" 8?$6 6*ORU< ^=6"#&>]II>LZ4U/&X?U#\ZW]&7%=5P+?EWEIILZHT] MDL*:EMPL9/49]OX,K%XBN79?4NW7]CR2E-K(?&^,!#D3]9\^[^-P9!"&KQB$ M>X/0<=<;..<4)&2 M6V&HV+ 5!S+3&HP^)U_P7KPC2[P+:8G#4-.3\XZ=*,F=)'3C?X5NA\+B5^\)!55Z<\VEVNA?KN0 MS;LK7= $IAXFE@:U!2]^^R88]MYW8/8;S'Z7>CRGG(H$SLD*-DP()C;V%'= M51MIK35P6C:AMW%P.0K'_8F_;6$8- R#3H99FC*;A)JLE2 MZ7JJC:96'1[1] ?19=0.,VQ@AITP>%"8JP*S2RD0R8X8187FU%*T00Q?0(11 M.&YG,HTZ&!>1 =:GP)TP=E$+)+;.UCG)2E"K)L-9@@!)9"F,/C>:VU08X M>AFE8!2T XX;P/'_W1K NM!Q7\8O[DO8OPQ&P[]V]X\J5 YJX^JP)LZYNE@U MHTVIG]45[O?R^IVXHPKOL28M\D$#B9$"E+Y"0>T_./8G/O7BT8_R; M6!,BP?>>'Q\0/]8%*^*F6-!IBS^2A=R/38" M RS($F>Q?&*[WTE5D)OC12P6Q2?85;&6 :),2)94R8I!0M/R&W^OA#A*0$Y/ M JH24#O![4FPJP2[*+1D5I0UPQ)/1ISM ,^C%5I^4&A39*MJ:)H_QF?)U56J M\N3D$V.+'8UC@-,%>$@E3E=T'A-P+P21XCWX4[U)-]T+X.V,2$QC\4Y=_?(\ M V_?O -O $W!RYIE0H&)D2D5O_PN9E1Q^5!R03U<9B2Z!39\#Y"%;$WZ]/QT M=)IN*E5J:5 M#2KP[!Z\CS2EDMQ\5J^91AKP]V<5#QXD2<0_NEI+<$[UL$>0I]\XDP(,,6<[VFZ O<) MRU*IJ[B$<0N8W#ZV$^@ZE@]'YO:X%DT84E%-V E+IV;I#+*\CZ(LR6(LU<-2 M%+FD_^'<*'1$2R3OB,&-X_N>UR*J";,1#$(]4;ZCO"4%TXQSDD9[ M\,)Q*N)>LFZ'!;3LL$6U&W0#?4M/U*N)>H-$7YC$,5AF,N,$X%TB/5&_)NH/$OU:>'7^W+>$J]X#GDC>P*J7M:8-'@FG;*%C/XSO M@3W!7 ($I;*-?# N]U_C8]#\'/-.CPFCI<">Q$!V@U3=RZCD57.*?KU$4H M:*U335Q@0:O'H^'1M &OYM(55,M_K=!O<]7$(81"\VW;[ZQ$)P@UYY8=7%A:#L]7)N9 ZVVLM-.^SPL&''";M! M/8Z-FIZ-AGOV18Z-NOW8MIV@+:HNS/)\OX=KT[;1<-O^<<=^Y09NZ;/:O[YG M99XU5)M'^R3Y)M4?F*]H*D!,E@K;NO65<+S<]RE/)-L46R=S)B5+BL,UP0O" M\P!U??8\F62:_), =DC3)"OA:PU+JA'OL$>;"5^UM8[;>J-GJDWC,BU M%*;0Y$+DD.\2^-A\IT"T46 :OH" #;"0 &0 M 'AL+W=O+8^'K)24%'#+D2CS'//?%T#9:F3UK)<;=V2>27W#CH<+/(=[D(^+ M6ZY:=N.2DAP*05B!.,Q&UKAW?CG0X\V ;P168NT:Z213QIYTXR8=68X& @J) MU Y8_2WA$BC51@KC5^UI-5-JX?KUB_NUR:ZR3+& 2T:_DU1F(RNR4 HS7%)Y MQU:?HZU@H*85D>2U6!#DIJG_\7-=A3=#S7Q&XM MU=(2@.Z FJ&2[1JBXPE(3*@X4:Z/]Q-T?'2"CA IT$/&2J$@Q-"6*I>FLY,Z MPT65P7TEPP22,^3U3I'KN%Z+_/+M"LG52O[9%KJ:Q6^?1;_=YV*!$QA9ZO45P)=@Q>_?]?K.Q[82_">SC8)X M34&\+O=8U=5O"UBI J/27YMEW(LB7SV"Y3IYI_>!Y'Y#[N\C#]K(*U5_@SQT M_"WR3N\#R8.&/-A'WF\C#W;)P]!QML@[O0\D[S?D_7WD81MYOX7#8+!%WNE]('G4D$>=Y \9J"/ 3 )OXX]:5ON@YVWQ M=\YP(/^@X1]T\S.I=J-9M3?AM4VI+;BXS=?H"K@>H_AEC\J6A M-_CF/!?_!5!+ P04 " #<3RQCJCNF!BH(1N5_[8U>$@()D]$Y!T 4G@W28*+%?<\2Q%LV/HO0G-;X+4 M$$WDA/9-N7=(MX+B7+8T2@E'57:6<5VPI=%.Z WH7(!E;]D-1^2^<.S5"AP7 MTKYFI7OY8GQZ=LF$9I\KTU@*M&GLB(X'C?,N]76;.GDF]0KR$S89OV')*)G\ M 36U;]??<#&IZJ4EO;0DX$_^2]I*V%P:VR"P[U=KZY#^CQ]#(MHDT^$D?F8N M;,US6$0T%!9P"U%&2N:CRR,2)KV$R3'T;-D@$G\F@7Z\@H5$[%=?JR&Z+> \ M /J)W&;C\[,TW@ZPF/8LID=9W#1J##1=?/8=LD2F:%^M52F_U!)AHG, M>B*SHT0^^C(&ULK59= M;],P%/TK5IC0)L'RV70;;:2M&0*)B6E?/" >W.2VL9;8P7;;\>^Y=M+0EJQ, M:"]+;)]S?,^]Z;T;K81\5 6 )D]5R=78*;2NSUQ790545!V+&CB>S(2LJ,:E MG+NJED!S2ZI*-_"\V*THXTXRLGO7,AF)A2X9AVM)U**JJ/QU :58C1W?66_< ML'FAS8:;C&HZAUO0]_6UQ)7;J>2L JZ8X$3";.R<^V=I;/ 6\,!@I3;>B7$R M%>+1+#[G8\KZ717&N+F^UK]H_6.7J94P424 MWUBNB[%SXI <9G11ZANQ^@2MGX'1RT2I[%^R:K&>0[*%TJ)JR1A!Q7CSI$]M M'C8(?OP,(6@)P2XA>H80MH3PI82H)40V,XT5FX>4:IJ,I%@1:="H9EYL,BT; M[3-NRGZK)9XRY.ED(JJ*::RC5H3RG$P$UXS/@6<,%'F/ZZH6W!Z+&?D"F&)R M^80?'3X/4]"4E>H(W*3D\."('A'%R5XB%0C4UBR:>X)EX M_(!<80B%(I<\AWQ;P$5SG<-@[? BV*N80G9,0O\=";P@[ EH\G)ZT$-/7T[W M][@)NWJ%5B_\KWJE3&6E4 L)Y/OY5&F)/ZL??45H+HGZ+S&MYDS5-(.Q@[U$ M@5R"D[Q]X\?>A[X$OJ98^DIB6\F-NN1&^]23KS5(:M))2ONA9T+IONPU*@.K M8OKJ,@E]\VTM-[/2 _).AMN@M!=TVH&V7 PZ%X.]+AZH9'1:PC],-"+QYM7# MH;]CH@SUFX@[$_%>$W="T[+M-]#TFSX3\5_YBT].HQT3/: X MWBE7V@,:1KN5<#<:;05R;@>6PA0ON&XZ4K?;S<1S.PIV]B]P5C:C[8],,VBO MJ)PSKK!X,Y3TCH<8DFR&5[/0HK;M?"HT#@?[6N"\!VD >#X30J\7YH+N/XCD M-U!+ P04 " #]OVC 0_5=.636UTMI G3K(%*!5:NT:E59M\\FN1"K MCIW9#G3__\YEN%+ZR12(%IY+(.?L%K'=@)(:V-5 MN4XF!B67S9L]KW782N@.#B1$ZX1H-Z%W("%>)\2^T(:9+VO*+$N&6JU NVA" M3:9J++DEFRQ!IC,8**DY7*!,N5HX!QFC;N@62=\[M]PN[W50;Q!_:(->T.ZWM/M':?LN>:[R\YJ\8L8@^:KF](7( MQE=\3@M&GY\W?J>2OWG;?\6WV^U=[A3U.NA#W-NI*=QJ)R7JA>^R!E)W#9MO MJEUM&_FU[U\[ZV-J\$T__@/3_!WNF%YP::BPG" [%Y?$2#<=MYE85?FF-5>6 M6J ?%O230NT":#]7RFXF[H#VMY?\!E!+ P04 " #T \N,EM:\T?P7;:[=]S[611B[(Q$"^-/^XYON?8 M]S;?:W-KMX@.[J10=A9MG:O/XMB66Y3,CG2-BG;6VDCF:&HVL:T-LBJ I(C3 M))G&DG$5%7E8NS)%KALGN,(K [:1DIG["Q1Z/XO&T?\).SZGG*[6PX1?V76P20=E8IV4'I@PD5^V7W74^' #2[!% V@'2WP'3 M1P!9!\B"T#:S(&O!'"MRH_=@?#2Q^4'P)J!)#5?^%I?.T"XGG"OF6DKNZ%J< M!:8JF&OEN-J@*CE:.($E/9NJ$0AZ#&N7JGU0_F:N M43"'%3@-GY$5WT>:7/I+? LL19.,WD"9I-@"? M/Q^>'L-CC^RI]B+FU F6)VP'1JJ>BILWSK( M$A#^[L&AD4,./$V;P3TR8V$,D@S>PA0J=F^'Q#^3)VF)+*23 :HCZ9->^N3O MI%=T^[I1#@P]_R'-+=_[P.>[ZZY(1LDDCW>'@OX0U*8:'Q2\;[9?F-EP95_E^D^ 502P,$ M% @ W)A46/)7F(?F @ & @ !D !X;"]W;W)K&ULG99=;YLP%(;_BL6JJ976\A%"0I8@M8VJ36JUJ&FWBVD7#AR"56,S MVR3MOY\-E&6+FTR["3;X/<][3O QTRT73[( 4.BYI$S.G$*I:N*Z,BV@Q/*" M5\#TDYR+$BL]%6M75@)PUHA*Z@:>%[DE)LQ)ILV]A4BFO%:4,%@().NRQ.+E M"BC?SAS?>;UQ3]:%,C?<9%KA-2Q!/58+H6=N'R4C)3!).$,"\IESZ4^N_$;0 MK/A*8"MWQLBDLN+\R4P^9S/',XZ 0JI,"*PO&[@&2DTD[>-G%]3IF4:X.WZ- M?M,DKY-980G7G'XCF2IFSMA!&>2XINJ>;S]!E]#0Q$LYEEM52\ M[,3:04E8>\7/72%V!$'PAB#H!$'CNP4U+N=8X60J^!8)LUI',X,FU4:MS1%F M_I6E$OHIT3J57/.R)$J764F$68:N.5.$K8&E!"0Z1TO]&F0U!<1S=%.K6@"Z M(XR4=8D6^*75/;(,!/I2@(,/10\%IJA)RZ2ALW M>#?M3%ZU)H,W3,XAO4 #_P,*O&" 'I=S='IR]F<85^?=)Q_TR0=-W,%_)3\G M,J5.# MI(<"=)O.%0@;;[S'&T5V7MSSXL,\KC!%>=LCUH)+B:JN0]@,Q/O%#>.A;_?@ M>[_;F7?0Q2U(.4&DK&H%F6X[.GV0RMIRO#T'YW$0O&%@IY_Z_U &WC=#:IHA MH@2O""5*]Q6K%W]ON_JA%_S]KKD[?=ZPRU$\6K MIO6ON-('23,L]-$-PBS0SW/.U>O$G";]QT#R"U!+ P04 " #M E@"&/%1=ZZI7&U->^KXL2*JHO90T"9[925=1@5^U\72N@&P>J MN!\&0>I7E DOS]S80N69; QG A:*Z*:JJ/I]"URV4V_B'0:6;%<:.^#G64UW ML )S7R\4]OR!9<,J$)I)011LI][-Y/HVM>O=@F\,6GW4)C;)6LH'V_FRF7J! M-00<"F,9*/[V, /.+1':^-5S>H.D!1ZW#^R?7';,LJ8:9I)_9QM33KTKCVQ@ M2QMNEK+]#'V>Q/(5DFOW)6V_-O!(T6@CJQZ,#BHFNC]][/?A"!"&+P#"'A Z MWYV0D3 ((W*_FI/SLXNG-#[&'+*&0];0\4;_ ME77.=,&E;A20'S=K;11>F)]CYCN1>%S$%M&UKFD!4P^K1(/:@Y>_?3-)@X\G M(D1#A.@4>XX[$H]YZE")0]DZW.>3.(G2S-^/B,6#6/R:6#(FUJ'2)V*3JQ?$ MDD$L>4TL'1-+GHFE41R.:Z6#5GI2ZTX:RO%).=SG^G"?B[\W9,Q+^FR7HR1( MXW_,^$?5:!^VKU3MF-"$PQ9QP>4')%#=8]%UC*Q=@:ZEP7)WS1+?5U!V &ULM5C;;MLX$/T50EMT6V ;B?(E5FH;2)P$ M+=!BC;CI/BSV@9%H2X@HJB1EIT4_OB0EZV(K;.R5_6"+$N=PSG X.I[QAK)' M'F(LP!.)$SZQ0B'2"]OF?H@)XF81C M[ L%@>3/&L]P'"LDZ<>W M0JUU2&]>LM^JTF+\D\((YG-/XG"D0XL486"/ 2 M9;&XHYL/N" T4'@^C;G^!IMBKF,!/^."DL)8>D"B)/]%3T4@:@9P^(R!6QBX MNP;]9PQZA4%/$\T]T[2ND4#3,:,;P-1LB:8N=&RTM603)6H;%X+)IY&T$].% MH/YC2., ,_XGN/F61>([> <6(6(8W.$T8WXHHP3F,4K FVLL4!3SMW+&_>(: MO'GU%KP"40*^A#3C* GXV!;2*05M^X4#5[D#[C,.0!=\IHD(.;A) APT 6S) MIJ3D;BE=N4;$:^R?@1[\"[B.VVMQ:/9R<]?@3J^,<$_C]9Z+L#QY019C\/<2 MU*.]#?:_GZ0!^"@PX?^UA2]'[[>CJU-^P5/DXXDECS'';(VMZ>L_X-!YWT:] M([!&(/IE(/HF]&F>4U]1G-4S*VCCG ,--) J1&N9)J.1)[=C76?SVVD-/P>E MGP.CGS-*B"PP>J_ 3YD&T -S1E<,D39?C6"'[D]'8 W>PY+W\*2).NPR$!V! M-0)Q7@;B_,6)>IF)D++H!PZ ?&?6\K8M CGLL):/ T=^=K+6N/B1U$8EM5%7 M9W"T1\;UAA#ND#$N=R09KR3C&RR:[U-PAF*]WVX<"G62+R5D=YMVPM7>J& MBEU-S_M2GQ%;10D',5Y*4^?L7#)A>:LG'PB:ZF[) Q6"$GT98B1/MYH@GR\I M%=N!6J!LN$U_ 5!+ P04 " #&5!:VYSBA76)"K3@RL3L> M1ZR6!:%PQY&HRQ+SYPD4;#6R7&L=N">+7.J '4<57L 4Y$-UQ]7.[E0R4@(5 MA%'$83ZRQNY5$FJ\ 7PGL!(;:Z2=S!A[U)LOV2_!V"<$!@M\2_)<2@I80 MF,HT5DP=$BQQ''&V0ERCE9I>F&(:MK)/J&[[5'+UE"B>C*>2I8\Y*S+@XAVZ M^5,3^8S>HVES"A";(X- ]U#5/,U5A=%8MTK#9L_H)V".3A.0F!3B3!$?I@DZ M/3E#)\A&(L<NB6 M49D+=$,SR+8%;.6\L^^M[4^\HXH)I /DN^?(OX!O;9]O\8S(;GZ1_WN*W$C$?1+Z%OF2E0XA9&EKA$!? E6_/:-&SH? M^\KSFF+)*XEME2[H2A<<4X^_UN4,N#[O[:GEW8'/T*DZMDWXK*^BC7)HE/4U MNXR=R%YNEFD?X8?N13#M3?<-I4S(/B>-T/"( MDWU$X'ONKI%]E.<$OM/O(^Q\A$=]C)? U21"%2>I^E3=VK1D^F,ZE;&BP%P8 MA(GV-BW\K]4&<;G9#??#( AWO/;!PH'C[IBU-^[H$OC"S#JA.E%3V=Q77;0; MIV,S17;B$S5FFZGX3Z:9T;>8+P@5J("YDG0&%\H=;^9>LY&L,I-@QJ2:*V:9 MJU<%X!J@GL\9D^N-_H'NY2/^"U!+ P04 " #F;,K'([:629S1*4=BG::$;V]IPC;7':_S4G ? M+Y92%W3'HQ59T 8W6C1HH/5"E@CS'VV*:WL=%*Z%9&D1 MK&J0QEG^29X+$+4 /-@3@(L O!/@]?<$^$6 _]J ?A'0-V3RIA@. 9%D/.)L M@[B^6JGI P/31*OFQYE^[@^2JV]C%2?'#Y*%7S_<*G(1FK!4=2=!S /Y@/X@ MG!/]5-!)0"6)$_%>E3X^!.CDW7OT#G616!).!8HS])C%4IS6"N[B)%$RJNQ= M_734E:K2^M;=L*C@;5Y!O*>"'D9W+)-+@3YF$8UL@:YJ;=ED_-+D6^Q4#&AX MAGSO%.$>]ALJ-'E].&X(#UX?[CE:XY(3^^EU)HD^2IN+OIN>3W[_??'\]+UV)%0GI=4=-/(+R M)]H9__R3-^S]TL064BP $K.X]TON?9=ZSET@\J0&!IDE%*DY&"T46^FS/J9-O'+Y00W7 ._ 4QBYK NJN"T982+E ?I?G\B_LH(MNF*7SB M5&K+'TC,XG]>\C]W-OICNDK8EE)D\B*:KGFX5/S1-"%9$T*G6MNY$5(L !*S M*%Z4%"^.G),N(+E#B@5 8A;WRY+[I;/W*M9JK.;S!BKD(Y.8YFNYYA3%0JQ) M%M)#*>JR(45]DZ&<=6F+#4C,PN;UJD5PSYW,#3&VDGO7J,[XMAT.5"V 4K/9 MU0R$=^3!7E0 "CZD6@"E9L/'%7SL[+B?J9!QMG D^0,"_3S+-X)R1K8&!:1F M@ZIKG(_GMCY? M=M?B!3:U*.=QD84CEB1ZF:U&<$ZO&5Y^HXL:N^'Y66]X6?O;)0EJBJ#4;)*5 M+?+<9N0;DISJEYJZ.];'Q6]TOK(Z76QTTW&MTW$*MH;Z%U?$JK^.Y MS<[TX;%YL0/J:D#5 B@U&UEE;+QC.QL/U-J J@50:C;\RMUX;GOSBL6.6\!W M9.OOC0R^)])^;UW9%'S IA2OUY6+4_VJEF_124*%0'))LL;T4>CNY-[=MVCN MN[?M+%!J-JO*EF#GRGM\OV=RU'5^@:@&4FHVL,A,8'WERPY"68@*J%D"I MV? K@X+=3N+PY'9 P.'DW)&M0;V%%<&5%<%N*W+_<-,\L"&=PP14+8!2LY%5 M/@0/CCVP("0=T(J%H I6;#K]P(_E$W;EKRC<1K2>"511!.R;=QEXE;Q>ON7-^[0UIM*WL*W^)5O\=V^1;^4 M.47WQ?\;85ZWZKD1_8?NR'.7Z O7]G#'Y&PO=V]R:W-H965TBX_;? M+W5$,B5*C8-9P"^)CIE/<_"S9JB9']+L(=\*(='W.$KRR\E6RMW%=)JOMR+F M^8=T)Q)UYS[-8B[5:;:9YKM,\*!4BJ,IL2QW&O,PF2SFY;5EMIBG>QF%B5AF M*-_',<]^7(LH/5Q.\.3IPFVXV7DRM\P:A=*)02?X;BD!\=H\*5NS1]*$Z^!)<3J[!(1&(M"PBN_CV*&Q%% M!9*RX]\:=-(\LU \/GY"_UPZKYRYX[FX2:._PD!N+R?^! 7BGN\C>9L>?A.U M0TZ!MTZCO/R+#K6L-4'K?2[3N%96%L1A4OWGW^M '"E@=T"!U JDJV /*-!: M@3Y7P:X5RE!/*U?*.# N^6*>I0>4%=(*K3@H@UEJ*_?#I,C[2F;J;JCTY&(E MT_7#^VL5N0#=I+%:3CDO$_(>#=[Z]+TX%N@-$Y*'4?Y6"7];,?3FU5OT"H4) M^F.;[G.>!/E\*I6-Q9.FZ]J>Z\H>,F /)NAKFLAMCCXE@0AT@*ERKO&0/'EX M3481F5A_0!2_0\0BU�S?/5B4&=/5\=CWA#FWS1$H\.Y6O+,_'^KI^4JRSC MR48H2DIT]P,=RRWYC_+RU8%GP3M=[2;-)?K[=_44]$6*./_'E++*)-ML4O'+ M=)'O^%I<3M1/3RZR1S%9O/X%N]9'4[@AP1@0F)8*NTF%/89>4Z<*\?HXIJ+B MARF2%:)3(A8_R8\+VW$L?SY]/ Y17XI2.IOI4JPO13S'LQLIS2FG<0J8 $8T!@6BJPU5:7%C@9:TB-:-CWW0X=#6*>8W5?D@8IU\8#A,1'53,> M]>M641*]YO'N(V(#[!Q'.'5-@*(Q*#0]>J2-'CD_BM8V0>4#$HU!H>GY:'L* M/%HGOXREM/^F<['O=%G:%\,SXI,N30UB#O7] 9ZV)3H>K]%O5U=FLK8!P,X9DA.TK0!%8U!H>C[:S@*/5LLO(Z?;HY/MD2XU#4+4ZQ+3 M)#308^*V1,?C-?JGU7)IM'M4[>1E (G&H-#TD+4] /;/D):@+08H&H-"T_/1 M=AEXM')^&2UG_7>F[7=W?TQ2V+:[Q.Q+83K#9F:2MF GXP6[;>$W#V]17FX# MQ5RNMR9'QD%.71>@: P*30]@VQD0?'X\):"]!B@:@T+3\]'V&F2T=GX13VM( MC8$.M3H\-4EATN6I04HULP,-*&E+=C)>LI?+(KU'F7@4R5X8B]QQB)-7!>C& M/12:'KZV+R#V&;(4M.D 16-0:'H^VJ:#/..SPZDL=?K,LK [Z]*T+^:[?H^F M?2G7!.I=FCT(&28;HRN@6_F@: P*38]@VRH0[PR9 M"MJ'@*(Q*#0]'VT?0L8_1KR(J7Z/7#//L[M$[4MYSLSJ$K4OY:HB>H"H;3E/ MQLOY6Q4JGJVW)5<#]5*-TEVQAHSN@.[V@Z(Q*#1].*%M'ZAU?FREH-T(*!J# M0M/ST78C=/P[Q4O86D-J/"16M_HU2#DN[;Y6#5(V]0?VCVA;U-/QHOY7D8B, M1R59>1"'29C+C!<39$:'0'?^0=$8%)H>R*-IHG,<)X*=)X(=*/H_^A+:]B44 M?J:(]@>!L$_=[I<8DQBVCW:,Z@ 8Q"Q\],&F\FQZ-'(8BVQ3CF[FRN9](JO9 MO.9J,QYZ50Y%=JY?XPM6#7FV,-7,Z5>>;<(D1Y&X5Y#6!T_9E%5CG-6)3'?E M8.-=*F4:EX=;P0.1%0+J_GV:RJ>3X@'-,.WB/U!+ P04 " #=F%18WF.T MR_(# !T#P &0 'AL+W=OWTOOI,=92]\18@ KU59\ZFU$F)]YS@\6Y$*&>";JL+LYYR4=#>UH+6?^%8L M5T)-.+/)&B_)$Q'_KA^9'#D=2UY4I.8%K0$CBZEU#^]2Z"L#C?BO(#M^] R4 ME&=*7]3@GWQJN6I'I"294!18_FW) RE+Q23W\:,EM;HUE>'Q\Y[]LQ8OQ3QC M3AYH^;W(Q6IJQ1;(R0)O2O&-[OXFK:! \66TY/H7[!ILA"R0;;B@56LL=U 5 M=?./7UM''!G \(P!:@U0W\ _8^"U!MZE!GYKH%WM-%*T'U(L\&S"Z XPA99L MZD$[4UM+^46MXOXDF'Q;2#LQ>Q(T>[F=2\_EX(%6\CAQK -R"_0K\'6MA_ED[<+S9F%T9F&(P!=:BQ4'G^J< MY*<$CE3124%[*7,TRIB2S 8>_ "0BSS#AAXN-T<&\_1RB6R$Z?Y MG=/\,?;9G"R+NB[JI:P%):XS FZ*NCVB1C.V@( M"Z,X#-Q36#J$);X?QV$'.Q$5=**"45%_,5P+F9Z_D!(,%O<1@D%/R1 5A+[7 M%V) >4@EE4E'V.D(1W5\>B4L*_BOE82#U6]1X'N!U]-BP$$I)NGA4@/.@]"+ M8K.>J-,3C>J1WYT%*2Z(3&18/_+Z9\R BI*D'QD#*G9C:%82=TKB\'L:J9)WJ&,%-JI4-8+[5.%"6=HF2T>G[7WWL9FOLM8?+^ O:'#SRR M0DE\ZVB%1H')-6OK-V%UG1^=E)R6)68WURCO:"@R0'<9]928@ M0G:0]+69@&Y@!V?*+T0'=>@W"O"%^M!P-UYL1_WOB@F'$CL>1,[$Y]KG(G>X M+<'1>T6O&%^HS3.%)+']_H?&!$R0[<=]<09<&-LA.J/N<*V!X_>:MD#_0=KY M@T2)7=OMUVH#S)"=J0%VFIV-/.>H':D(6^JVCH.,;FK17.>[V:YUO-<-4V]^ MKEI*W>8<:)I^] MFLA9Q4)*%I'3E>;0 :UJ\9B#H6C<]SU3(%DH_KF1;3)@" MR/<+2L5^H!;H&NW9_U!+ P04 " #=F%18]T.>^ED# "I"0 &0 'AL M+W=OJY+)A94K55_:MDQSJ*B<\!H8/MEP45&%4[&U92V 9B:I*FW/<4*[H@6S MXKF)W8AXSG>J+!C<"")W547%KQ64_+"P7.LI<%ML)I'&&\#W @[R:$RTDGO.'_3D.EM8CBX(2DB59J#X MMXENN6' MS]#JF6J^E)?2_))#BW4LDNZDXE6;C!54!6O^Z6/KPU&"&[Z2X+4)7C\A>"7! M;Q/\MR8$;4)@G&FD&!\2JF@\%_Q A$8CFQX8,TTVRB^87O:U$OBTP#P5KQ5/ M'RY6Z%Q&KGB%NTE2LR 79-WL!,(W9)EEA8[2DERS9J]IS"V45&&BXL3PD*^U MCDMREH"B12G/D>9NG9"S=^?D';&)S*D 20I&[EBAY'L,XOA;SG>2LDS.;862 M=&%VVI:_:LKW7BG?]<@7SE0NR3\L@^PE@8U>=(9X3X:LO).,":03XKOOB>=X M_DA!5V]/]T;2D[>GNR?4^-WR^H;/?VUYM>'M\M[07_B]*K(4@K(MF/&_RWNI M!'Y\/\>\;[B#<6[=D"YE35-86-AQ)(@]6/'??[FA\W',MS])EOPALA>>!IVG MP2GV^!,M!-G3<@?ZT^#MEM^#5/T-V+C8L$T-F^["^]B=A>'J%FVJF9GE1SS90HL(NG0TGP""(MY+BJAC4\JL5W/2_JR1JBW#!R MICU=0Y071:X_+BSLA(7_5Q@>?U)APRG8=DQ:.+#9GP51T),V1 5../-ZTH:H M,/3\Z;BTJ),6G93VPYQFD%W0/0@\G,GF>4O6()HV>RQXBU^\;M1GV&TS7I94 MR&?@^9@'30$?CNJ>AI.@O[Q#5.!._)Y3R1#E(\KM>6 ?'6(5B*VY#$B2\AU3 M3?ONHMU]8VF.V5Y\A?>0YMKP3--<8KY0L<4M04K8(*4SB7!=1',Q:":*U^:H MO.<*#UXSS/$N!4(#\/F&<_4TT2_H;F?Q;U!+ P04 " #=F%18TQ?842D# M "E"0 &0 'AL+W=O]@+V^;[/ MW]TY]O760CZK.:*&ESPK5-^9:[VX=EV5S#%GZD(LL*"5J9 YTS25,UX%B"6N8YDYLA9F+==UK.UO# 9W-M#&[4 M6[ 9/J+^OAA+FKDU2\IS+!07!4B<]IU!ZSKN&G_K\,1QK7;&8"*9"/%L)K=I MW_&,(,PPT8:!T=\*1YAEAHAD_*XXG7I+ ]P=;]EO;.P4RX0I'(GL!T_UO.]< M.I#BE"TS_2#67[&*IVWX$I$I^POKRM=S(%DJ+?(*3 IR7I3_[*7*PP[ ;[\! M\"N ?RH@J #!J8"P H0V,V4H-@\QTRSJ2;$&:;R)S0QL,BV:PN>%*?NCEK3* M":>C1RV2Y_,A92Z%D,2WABV1)AC!(>YTPB MB"E\6QB$@B^2%>1_!@-%IZ@R?HA1,YZIC\1H-P-1KO1<3?J-"C>IM Y+K?X; M6EL^W(M"SQ5\+E),]PE<"KR.WM]&/_2/,L:87$#0.@/?\X,&0:/3X7X#/#X= MWCH235#7,K!\P5NU- 4YG[RNY4!2969(7ZN&R09V_<9L8\V#-9,I_+PC2KC5 MF*M?3?4I]P^;]SC]NU;'^]24V_])%O\GLKV\AW7> MPV/LT1V?(GS@!6R02?6Q*7''"<(2"3[DY?FFDYZR3=,G,CJ-*:B9+M]BBD]C M"K=,?MC M)>O=IVO]E'J)Y'1N6:QYM%:1=Q%<]=S5;A8:G2[W MG>)&IW;MM*>]4VOO'-4>\Q5/L4AAPS%+F_1W7N]Z(/Z?'O$QCSW9W5IV]ZCL M!ZZ>SZ<2$3A=T?0):)!,8Y/^;D/6O/ @A-*I%>Y[^>V#.)K=O/;5033NS@.6 MHYS91D!!(I:%+F_SVEKW&@/[Q![8A]2#E"W#7YJR@;EG19=. MARR;@G*BQ<(^DQ.AZ=&UPSGU42B- ZU/A=#;B=F@[LRB/U!+ P04 " #= MF%18XO^AZ1D$ #<#P &0 'AL+W=OP! ]$D,;4-;/]];2<$ M"(:E+7P(N;SGC1]?3GSZ6R[>Y9(Q!7Z4124'WE*IU4,0R.F2E53Z?,4J_63. M14F5OA2+0*X$HS,;5!8!"L,X*&E>><.^O?L2LRRTM6R9Q70+#YP!O!APP2$V 5 MKSG;RH-S8%#>.'\W%U]F R\T+6(%FRIC0?7?ACVRHC!.NAU_-:9>^TX3>'B^ M<_]LX37,&Y7LD1??\YE:#KS4 S,VI^M"/?/MGZP!BHS?E!?2'L&VT88>F*ZE MXF43K%M0YE7]3W\T'7$0 .,S :@)0-T ?Z,+H#M)J!;/("/F9,T;R0GVJ)M!I[',F=2.IG'T Y)(*)ON!TBTU M[PNF3:O&=:O0F59!!+[R2BTE^+V:L=FQ0: 16TZTXQRCBXX9F_H PSN 0H0= M#7J\/APYPK/KP^$%&MR.&K9^^(S?MW7YQ@3@ MSA>2B0WSAK_^ N/P-U?OW-(LNY'94<^1MN?()??AF"WRJLJKA?G)U8VT76SN31#?#!"(8I?U@<]A!#ID>ZC@\EF4.&4Z)F5(;!U340D47 MH?X0M%)Z ?\$)3IY.8$Q3I(.RJD,0Y2F7127C*!>Z$:)6Y3X(LHKDX;$Y)$I M+TN=B*3)4""78D##M(CIT*(G3!'4877X8QG'/#9FTD,E%2/W% MFK/\BA%+3M\/88A)!\HRA^QXU1T1]5JBWL7L^MUN%O3HC#9,Z,T/L.L+Z.\K Y]I+L K+=:: M]$-@09V# MW\.=R>/0):D?=F290Q8A'R?NR0,/=E3PZFQ\)5BS1\.'9#'VHZA+YA*BV">D MR^82AM!/HS-T:$^'_F^"OA(:G38Q2?P(=9D=NICXL)NK73JB=>0,\7ZO!2]N M2#K9^DHX[!HHY/>Z7R*7L-<[G(4-G4,7QSXFO8/?&=+]W@A>WAPY4OF5N.1T M91(]EEU8A\RQ@#.'[G@!UWS!0=E3,K&PY:/4TW)=J;HR:.^V)>K(%F:=^V-3 MNMIR:F]3U[U?J=#Y2H*"S;5EZ"=ZUR/J4K*^4'QEBZLWKG2I9D^7NOQFP@CT M\SGG:G=A7M 6],-_ %!+ P04 " #=F%18:$F]XMX" #.!P &0 'AL M+W=O8\E60\NU-H;G8IY+;;"C04WF.$'Y4B=<[>R.)2LH M5J)@%7"<#:V1>Q?WM+]Q^%'@2FRM02N9,O:J-X_9T')T0%AB*C4#4:\EWF-9 M:B(5QI^6T^J.U,#M]8;]B]&NM$R)P'M6_BPRF0^M6PLRG)%%*9_9ZBNV>DR M*2N%><*J]74L2!=",MJ"502TJ)HW>6OSL 5PPQ, KP5X^X#@!,!O ?Y[ 4$+ M"$QF&BDF#S&1)!IPM@*NO16;7IAD&K227U2Z[!/)U=="X60TD2Q]O1ZKS&5P MSZCZFP0Q!;F&2?,G )O!PR1)8*1+5,@U7,8H25&**^7T0.N2K1'!$$&RX&FN MR" IB>9XF<1P>7$%%U!4\#UG"T&J3 QLJ4+7 =AI&^:X"=,[$:;KP1.K9"[@ MH9.N+<1/O;.,L:8WH#O?@+/\?PC =V_'^X=@S2B;%%) M :K_@M"Y%5"W5R [EL6&K6?8=$=>1K>N&PSLY79V#IW"L!_N.L6'3D'?[W=. M.VIZG9K>6363/05PJ6YM(^OJF)J&+=P.U \#=T_.H5??<9W^GIY#KUZO[X5[ M@NRM3D>1S\W$$)#J*C1WO[-V0VED>O&>?:R&53-;_M$TD^Z)\'E1"2AQIBB= MF[Z*C#?3H]E(5IM^.F52=6>SS-7 1:X=U/<98W*ST0=T(SSZ"U!+ P04 M" #=F%18F@9O918# !U"0 &0 'AL+W=O)0'+)&!:;$5"^'CB^ MLQUX)/-,F0$WZA=X#D^@?A83H7MNS9(2!KDD/$<"9@-GZ%_'/1-O YX)K.5. M&QDG4\X7IG.7#AS/" (*B3(,6']6, 9*#9&6\;?B=.HE#7"WO66_M=ZUERF6 M,.;T%TE5-G"^.2B%&5Y2]B\%Q!6@-!FIK1B\Q!CA:.^X&LD3+1F,PV; M3(O6]DENMOU)"3U+-$Y%3XHGB]9(9RY%8\[T:9+8;D@+W6(BT#.F2T W4A%6 MCO.9B6.Z9:$7:"CUD2G,G$1G,2A,J#S7\!M64+X!*./09"F23"^#)A3G?5=I M[4:!FU0Z1Z7.X(A./T //%>91#=Y"ND^@:M-U\Z#K?-1<)(QAJ2-.OX%"KR@ MTR!H_'YXT "/WP_W3[CIU/O8L7R=8_N880&MZ=M]' J!\SGH?ZI"TPW:C9O@ MC1T>KK%(T>][38GN%##YIVE_RO7#YO7-[70M"YS P-'7CP2Q B?Z^L7O>M^; MWE/:SS'IYBC^[)#- 9R=$&L)#G38D[3=!%S)[KIBQ]&!E_!+GG M_[+V?WF2ZIE3?B/]O1'PJ8D]VKY;=.RG[DT/5H_788VI)Y,#[2;XKR"?!*4SY('K"8$UUR*,PTI=?NZ1,BRB)?=A0O M;-F;@?4$L#!!0 ( -V85%@9G&S6 M4 , #$, 9 >&PO=V]R:W-H965TSL_4O:;;P$$>JS*FB^LK1"[:]OFV18JPJ_H#FKY9$U9182NU.Y;,Z5Z410UW#/%]51'V]P9*>EQ8V'I:^%YLMD(M MV,E\1S:P O%C=\?DS.Y4\J*"FA>T1@S6"^L3ODZQ)FC$SP*.O#=&*I0'2G^K MR==\83G*$920"25!Y-BM@?/ZG?ZN!E, ^$PY*6OXI< M;!=69*$XKP>330O)$\K7.: 7HGCP"1Q_02KY7^;X$1-?HCM%#H<]7OEYH 'R;@B!% MR=])RH]5BMZ^?H=>HZ)&]UNZYZ3.^=P6TIW:P\Y:)S>-$_>$$^RB;[066XX^ MUSGD0P%;AM7%YC[%=N.>54PANT(>?H]OI\.CX3C=>=E*?U MO!-ZRSUC4 M38ANB;R:JRG'-=R2#A25+ P=V "MY\PJ'SD=34BXIEEY(;) P MOTN8?TX]N84<&"E-"6N(@2:JRGA(7 >'T=P^]#,Q16$OBO 0E1I001!WH('U MH+,>G+6^$D2 R7A#"WN;^:X[R/@4A..>I\:X 13B$\9GG?'9V;N5PAKD[7O%R7%$LO)#;( M6-1E+'KIY8HF!_0A\-U@=-8&E!MXX\.>HGPW]LV''7?6XY==KGAJR1N_?DL# M:!:,:X(!%$5FU]CY_TOMO/1VM]/@.?=7]/ M!2G1;M!3%$U/(51/80P+3VMK///B<5P&6(@GA<, BV)__#+9O5ZJ K;1/2E' M&=W7HFD]NM6N[_VDN[W1^HWJAW6/]E^F:::_$;8I:HY*6$M)YVHF+;&F/VTF M@NYTQ_9 A>S_]' K>WI@"B"?KRD53Q.U0?&PO=V]R:W-H965T6*#C0J'+*4LNU[;&5T20W%K-J[HDO9JR4:9+#$R>BS#+*]P^0LMW<<(S# MQ'.RWD@U82UF!5W#"\COQ1/'D=6B1$D&N4A83CC$<^/>N0L<5SE4%G\FL!-' MST1163'VJ@9?H[EAJQ5!"J%4$!3_MK"$-%5(N(Y_&U"C_:9R/'X^H'^IR".9 M%16P9.E?220WU^A8;02.&%+!75+]DUMK9!PE)(EC7.N((L MR>M_^M8(<>3@C'LX^!=ZN W#GZE3$VETB&@DBYFG.T(5]:( MIAXJ,2MOI)_D*NXODN/;!/WDXFL>L@S('_0-!/E,7C"OHC(%PF+R_HH\OF&> M"2!!$L? (2(Q9QFYSUB92T&6+"M*B;.K/:%%D>Z3?$V^FR\F^0(1<)H>0SU3 M"40R\L1!XK!Y7 '$0,(3>(YGXAKNYYF0W"YNS/ QFLC[%5XWMD(8_A$ MF#)1D15BNY$04.8&UAK!/ M&(N??W+&]B\ZM:X) M%EP)[$1)OU72'T)?5"DM))6E9'Q/XB:YDUI@ELD:E"V U#:5.V_H;CG\29WO431F] MF3_N)$V/V4B?-I.6Z620J:HH289"5KSPI I?ZV,\D7L=IV&TFY$YMC_HZO_R MC*-O3O2.P1E'QS6G__,\D6+:2C$=A/J-J:.G1/(K/#LQZNJXI*JQT0DQU8=C MT@FNWLP;=8([U50$NR>TMRV?VT$^S[@M* \WA.81=E%;; \+;/8DP?(0)=J, M'0:\<QWWLD>Q +.TSL'W-4@F.3&N'&EC1?5[&N][BV M:QG&Q/5Y/8J<]_1[)/F1;YYJ]>^P];JEN,?.G73I:.V<\:1#QSKJZ3/@Z^IN M)+"V8,M=M[+M;'O_NJ]N'9WY!W4OJ^X*[S#UI>X;Y>LD%R2%&"%M&PO=V]R:W-H965T\W(M$U$$CV2MM-^^ATE178D M2FF&O+$E^>[\NR/O_N+T(.2#VC"FT6.1EVKF;+3>7KBNRC:LH.I<;%D)OZR$ M+*B&6[EVU58RNJR' MF4.'.;:,L><%*Q46))%O-G$MR<442XU!9 M_,W909U<(Y/*O1 /YN;C1@./?)JC3_J=Q/+U^ MBOY'E3PD4-V?#2+..MEO K!S\]_UAFHF#HCCXRA2;HEJ]+ON(9+36Z$L56E*S4 M"HD56K 5DY(MC2FZ5(K!X[-/G-[SG&O.U'MTMF":\ARN)NC;[0*=O7N/WB%> MHKN-V"E:+M74U8!L_MC-&KP/-9XW@+=@V3GRR6_(PYYO<;_Z>7?ON;L+A6JK MY;75\JIX_F"\I@B\+IN&6M"J%K;4ZEB!/9;ISPNUI1F;.=" BLD]<^:__D(B M_+LMT3<*]BQMOTW;'XL^_P+C! :'I)J7:Y0+I1 L)\J@$ERCC$KY'0;*@4K[ M$M?!PRJX&2O[.<$>@?78GR;8MTK3&+=&S\"#%CP8!;_5(GN8F#8'6MC.,'YH M-3W8H[EF-MHZ8G3"$?DXZ,#VC4*+67/VC0)_J(AQRQF/"=B@J(1A^[H"-V&?-Y+G==O-8N8'V!_"/FHB>;THOC >R)M*XUM%>Y[_ M41S)N#JV^6="#2R0;]E7,+>[$FBS(W&4#G7!40;)N Y6;^<3L9KL8'2/;*2^ MK,'&3KKB9S/S?']@M)"C_I%Q 5PP6)^,-XT*\YL60FK^HWI@Y>TKW<1+*C*)(75'%P=K_4 'WMFQ#<&XHVLQ0/2#DY:B09%\EZT/P?[+X M3D(2)5V=M-D%Q//" ?*C5I)QL?PR,!Q?XDYZ+Y>3).B].-G,8I)VMXE[#-: 5^^#R& +(^/M8W6FRK$]B]T'">JRXW<.1FTAC [RLA]-.- M.=2UA_CY?U!+ P04 " #=F%18U92"&0<# !/"P &0 'AL+W=O'06#B.6;<^&J!DIY,E!6:AD2>%498&41CV@HP+Z8T&Q;U+ M/1JHW*9"XJ4&DV<9U_=C3-5JZ#'OX<:5F,VMNQ&,!@L^PPG:Z\6EIEE0JR0B M0VF$DJ!Q.O2.V.&8[3F#8L5W@2NS-@:WE1NE;MWD-!EZH2/"%&/K)#A=EGB, M:>J4B.-W)>K5/IWA^OA!_7.Q>=K,#3=XK-(?(K'SH=?W(,$ISU-[I59?L-I0 MU^G%*C7%/ZS*M=W(@S@W5F65,1%D0I97?E<=Q)I!])Q!5!E$!7?IJ* \X9:/ M!EJM0+O5I.8&Q58+:X(3TD5E8C4]%61G1Z:NW."W1.T M7*3F'>R D' NTI1.T0P"2UZ=;1!7'L:EA^@9#R<8^]!A[R$*HPY<3TY@=^?= M4YF H&ORJ":/"MV]YW2)VU@1.W8XRNU<:6'OF_A:=5S:'YH%CW'H45X;U$OT M1F_?L%[XL86R4U-V"O7.B^<+G^[H53((8Y0X%19^GM%:.+68F5]-V)TM8._5 MV'NMAWM!WP-Z\UTNR!FDRAB(*37NZ3.PXCIIPBT%69EH[F.P'$5]_V 0+!LX MNC5'MY7CC#Q38B(=76PQ :O<6&B$7.8&&T%*11:M@?3\;C-'K^;HO2+9X ]< M^Q,?3J5%+7D*5[A$F2,5B?M;P.[7V/U-9V+__P1X M/A,/:HZ#5HZ)Y1:!RP3.5$RA_IIK81)1U)8FB%:U5YX9"Q^_ZN&V@ETI;YA\ MK1ZQ3<>[4GP2\*[?:XXW>ZPOK+W 4-6GFBY?KB_M.J\]L<<*P[968M@V:@Q[ M+#)LXU6&-929 [\?KO_8/Y$/UMHCUVJ>U6T#/ITK9AXEKPNH>>O074$L#!!0 ( -V85%BP38%, M'P, $D) 9 >&PO=V]R:W-H965T M;))Z[VG>B)SA="/D=U4B:GAL:JYF3JGU\L)U55YBP]296"*G)W,A&Z9I*A>N M6DIDA24UM1MX7NPVK.)..K5KMS*=BI6N*XZW$M2J:9C\>86UV,PH_ZRO)4T3X!#[1 MOCS*4+.J5L=$^7*?P='K8W@-%8?/I5@IDE135U.DYGUNWD5UU485[(G*#^"C MX+I4\(X76#P7<,EB[S-X\GD5'%3,,#^#T#^!P O"D8"N7TX/1NC9R^G^ 3=A M_]5"JQ?^X5=3\/7R06E)I^G;6-9;U6A MCF7L;XIE?TGL63:C/IO1(?7TAJ]1::IEFK:M2>E8ZEJ)B94PM72=)G'L3=WU M=DIV07Z<#$#9+BA(SGO,,P>3WL'DH(,[9'7U"PM84*&'HUHH.HYS*1J@QD"E MCU,ID1)Y3J>9QDR5=M=4O7$%)=;%F._VQ?&VI22(![YW0:>^-T1E8ZAH$H]; MCWOK\4'K[5' =O^? $<]YB(>"S#Q!S9&4!,O&+@8 87Q'A-);R(Y:.*ST*P& M8:U4797%OLKN\93L[*/ST)\,+.V"_&CH:!=SZD^B:&#)W6HR#&ULK5??L\*R(8)("H)^_K?=R4PP5@A>? +(&GW M8[_5:E<[/S#^*E)*)?I9Y*586*F4U;UMBSBE!1%WK*(EK&P9+XB$(=_9HN*4 M)%JIR&WL.*%=D*RTEG,]M^;+.:MEGI5TS9&HBX+P_U8T9X>%Y5K'B:=LETHU M82_G%=G1#97/U9K#R.Y0DJR@I6'L M50V^)0O+41;1G,9201!X[>DCS7.%!';\VX):W3^58O_[B/Y5DPS'*AG^C0RCH6BFLA6=$J@P5%5C9O\K-U M1$_!#=]1P*T"'BKX[RAXK8+W606_5?"U9QHJV@\1D60YY^R N)(&-/6AG:FU M@7Y6JGW?2 ZK&>C)Y9\06M_*F!44K2E'FY1PBGY#CZRH6$E+*1 I$SVL)=$[ MQ;9H1406ZX4HRVM)$V2$N8ZH)%DN;@#P>1.AZZL;=(5L)-2J0%F)GLM,BMO> MQ-\IJP4 P^35R7AN2V"K;+;CEMFJ88;?8>9B])V5,A7H2YG0Y!3 !C=UOL)' M7ZWP*&)$XSODN;<(.]@S&/3X>75L4(\^K^Z.L/&ZG?SM<%Y40R;G)M MH^J;554NNA<5B>G"@F0C*-]3:_GK+V[H_&YRRR7!H@N!G;C,[USFCZ'KPY+I M*#?YK-$-M*Y*M_ME&$RQ/[?W?6><2P6!ZPVDHG,IWP]FDT[JQ/R@,S\8W?$? M.@G":25[V/D=1<"D@!/='K]:P))D:A8..T5EQQ95<*:UE(EW<,E8N218="&P M$V>'G;/#T5CYP-E0@H6$Q):5NUM5N""?7F?'U1N3FYO?A;V0\,+0#P?A99)R MW$UZ1A/1AG_5:GZ(%0(536/4ZC&'6G)XE==,+YLUNN/F$[. MK,-A,.!Y+N--\8#EN4R 9V:.TX[C=)3C>O,,I>FI?3[ 4U=!&*/K44[3/K3^; @ ] 8 !D !X;"]W;W)K&ULK57+;MLP$/P50@6*!&@B2W*<(I4%V%:+YI#"B/LX%#W0TMHB MPH=+4G;Z]UU2LFJGX+?*\16*&_\ENS9V$)"B-E:) M%HP9"":;ECZV.AP HM$)0-P"XJ> X0E T@*2EP*&+!UR:FF6:K4C MVD4CF^MX,3T:RV?2'?O":EQEB+/9%[Q9M[)0 L@<-%E45 .Y( N\7F7-@:@5 MF4C++DK&:W="9*:$P//R@89\?"QX74))5EH),J.\J#GU!XK W&%PK7>/LQPL M9=R1.25MA;A(3.R8( M49U.HG@OT31^EC&'XI(DT3L2#^*D)Z'9R^%Q#SQ_.3QZIIJD._#$\R4G^#Y2 M+9E&P0LK!Y?550'3CLG@" #]!0 &0 'AL+W=O-4]F-UU#F_/[-HQ*;B!&WL/,_]\,_9,NE/ZT50 ENP%EV865-;6UV%HB@H$ M-2-5@\2;M=*"6MSJ36AJ#;3T3H*'<10EH:!,!EGJS^YTEJK&W+--9=U!F*4UW< #V"_UG<9=V*N43( T3$FB83T+YN/K1>+L MO<%7!CMSLB8NDURI1[?Y5,Z"R $!A\(Z!8JO+2R!$&#\[S: /Z1Q/UT?U MCSYWS"6G!I:*?V.EK6;!54!*6-.&VWNUNX$NGZG3*Q0W_DEVK6T2!:1HC%6B MJ-74U(Z]68"GCYG4:6HSI/,.B MTU^T^O$S^N.8W*)N9<@'64+Y5"!$V)XX/A(OXK.**RA&9#*^('$43\[H3?H* M3+S>Y-\56("$-;.&?)_GQFK\8WX,9=SJ70[KN2ZZ-C4M8!9@FQC06PBRER_& M2?3^#.UE3WMY3CV[I7LF&D$HQW:B.0=2G'PVDA\(B)JK P"I01>8%;;64!)M MF'<^C.O<;1:-KM)P.\ V[=FF9]E66#P)),/F_ZDG94/X725^[BW-Z!$!R M7W&A)UZ)6%_XOLY+J*@^D34(L[*2JJ)H0K7V=:V %@Y4<3\*@I%?42:\=.SF MYBH=RP8Y$S!71#=51=6?*7"YG7BAMYNX9NL2[82?CFNZA@7@;3U7)O)[EH)5 M(#23@BA83;S+\")+;+Y+^,Y@JP=C8CM92GEG@V_%Q ML0< A1\M S6L#,^#< M$IDR?G><7K^E!0['._8OKG?3RY)JF$G^@Q583KQSCQ2PH@W':[G]"ET_IY8O MEUR[)]EVN8%'\D:CK#JPJ:!BHGW3^TZ' 2 F0YOVF;#'OD!E5IG!87H-R!28D>. M"!/DII2-IJ+08Q]-M79//^\JF[:514]4%D;DRNQ7:O)9%%#L$_BFS;[7:-?K M-'J6,8/\A,3A>Q(%47R@H-G+X=$!>/9R>/A,-W%_@$,*MDRGCLD:ZB8=C:*SL;\9*O,XZ30^'^TG98^3DK./09_4 M=N(/[G4%:NW\49LR&X'M9]_/]A9\Z9SGP?S46'/KI/]H6E^_HFK-S'7GL#*4 MP&$&/Y$SRV8/Z&%2!,""X9XD668O*HXC?J5"G@XWK-_TK'+ M6!XQASE-?R:1B*?&R$ 1K'"1BB7=?8$JGK[B"VG*]3_:5;Z6@<*""YI58+F# M+"'E$S]7.AP [,$)@%,!G&. =P+@5@#W4H!7 3RM3!F*UB' OL31G>(*6_) MI@9:3(V6X2=$'?N#8'(UD3CA/\A[%!4I(+I""V A$"%/6UD!S8"+)$1+V (I M &$2O4[>D5 .T0SDS8.]]0T_ T?O A X2?E[] %]!KIF.(\E8DZ)8F=8G_D63%97 M)EZNT"+%1.@$N'TJDER6/8%^?97NZ$Y QG^W:>IUJ6F79$%'9 U-^[6F_;/7 ML5D%F*P"5RBOZTZ;CB7?6/.IC]C6MWHC;V)N#_6YQ"GXBU,CGD$=S^!L/*?J M8%LD9YG^]49T219T1-90<%@K./R/63;L4M,NR8*.R!J:CFI-1QUGV:@E-\;N MN/$[RKE6B'V48K1/"40HK26GUAK(8L+(G+ U!<]TE/5(A>RX]C&4;#4PYR/45 MI6)OJ!?4C;G_!U!+ P04 " #=F%18EEAX0 R![+ M0IJQER-69[YODAQ*;GJJ DD[F=(E1S+UTC>5!IZZH++PPR X]4LNI!>/W-I, MQR-58R$DS#0S=5ER_32!0JW'7M_;+-R)98YVP8]'%5_"'/"^FFFR_ XE%25( M(Y1D&K*Q=]X_FPZMOW/X)F!MMN;,9K)0ZL$:5^G8"RPA*"!!B\!I6,$4BL(" M$8U?+:;7'6D#M^<;]$\N=\IEP0U,5?%=I)B/O?<>2R'C=8%W:OT%VGPDQE; 8Z 8E4.V=INBD: MGQB7*;O\58N*:H?L*UVL:Y5PA)1Q9/-Z840J+(+UN\TRD4#C0$4R[+9&VG> M]U(@ ';H0-)C4?^$A4$8[2$T_?_P\ B=J*M)Y/ &!_ .2/^;?0:UU+S* M1<*F2MIB::"&Q'AF$G MP_#H'=FMOZ;ZG["J^X'WI=[@?7!XMK>OXJ#7'X[\U79*>YVBSJFAZF^UFQ+T MTG5APQ)52VQ^NFZU:_3GKK\]6Y_0 ]#TZ[\PS>MQP_524/\H("/(H/>.B.FF M(S<&JLHUM85":I%NFM,C!MHZT'ZF%&X,>T#W+,9_ %!+ P04 " #=F%18 MI4-A6-GMM/"OY_MI%E :<6D MOC3^N.?XW&/WWGC+Q9,L !1Z+BF38Z=0JKIR79D54&)YSBM@>F?%18F5GHJU M*RL!.+>@DKJ!YUVX)2;,26*[-A-)S&M%"8.90+(N2RQ>)D#Y=NSXSFYA3M:% M,@MN$E=X#0M0C]5,Z)G;L>2D!"8)9TC :NQ<^U?IR,3;@!\$MK(W1B:3)>=/ M9G*7CQW/" (*F3(,6'\V, 5*#9&6\:?E=+HC#; _WK'?V-QU+DLL8?;6VCSL0(S3J7]1=LVUG-05DO%RQ:L%92$-5_\W/K0 _@7 M>P!!"PC> J(]@+ %A.\%1"T@LLXTJ5@?4JQP$@N^1<)$:S8SL&9:M$Z?,'/M M"R7T+M$XER,2?4:+YBT@OD)3SI0@R[K94AS=\)KE MV-[=:0H*$RK/-.1QD:+3DS-T@@A##P6O)6:YC%VEM9H3W:S5-6ET!7MT^0&Z MUT<6$GUC.>2O"5R=9)=IL,MT$AQD3"$[1Z'_"05>$ X(FKX?'@S T_?#_0/9 MA-V]A98OVL-WX#Z&S#Y(9DK+E:QP!F-'UPX)8@-.\O&#?^%]'3+JF&3ID MF1AU)D:6/?S?QX]^?=>AZ$Y!*7\/^1D=T\]CDJ5'(GOEYZCSYIBG]HVE:Y#T6:Z+_C!16FM([O]221--VFHGBE2W$ M2ZYT6;?#0G=J$"9 [Z\X5[N).:#K_F=8@, M ,P5 - >&PO=!NM>(@)TSX@YZ8Y]>YFGGC8BY4W^_6)L]>/J9]/XS?^IZE&Q8I[?OW9Z^_ MS0MU]M^_.K;?N9 <[]P$EZN0?I1:N%$P.(D_BQJ@[F]1F M^:DFLHZGF%O7K>CWSU^;FAJ2UMA*%$:>[)7NCFP1XD[+D:PA^IMCZ'1L% HF MQCFH>G#0RPJQ;L7(MP;-3G+J/1#>]X>$LY%DX)61G/&E-;?!,"YX(3VE[P$= M+@3+[(>%0SN#VZ/BR9DHI(EM(]C?HVKY%K":@4#&>2VP[5O#H%<2I:@4UWIB M%AOC(\BKQG?+4BN<2+(,VY?^VL%<=)!1(5,JZS"AOS(->IQF($>RR12NJB@# M )4J'9\S3:X%UECW\QVBWJH!55#2V,GP-]D ML]Q-VLMG\7HE>RC4A[E.1Y@Y="B]D31C"S-?9+4 C#W$V4E9\N5[SB8BIS;Y MO0,.>F3EYTT+R7[H:- J8VV@TO<>J%1LW+1\EZ2\HPNU:J=%AFMN'Z'F?UOG M"154$MX4K7O_D*O\;,75R_8E-)O'RK9BI\BH<_@:JP/&H8N,CT'D46QW]QA$ M)D<@LO-B3\TG/(&.HI#A08H,JN-:XTRX<2*LK1ZS7L9A(Z8*FPVHJ)R,S]/1 1ZT^X+"-7)N/&\%\+.9& ,/B8 HP'^N% MQ?F?\NFB^5@,T]9U(EW4IXOZ6"\7,C1?+([;)]$?=Z9)$D5QC%5T.'0J&&)U MBV/X<;-AVL #BP.1GE9K?+?Q#MG=!]B>[NH0+%.\$[%,\5H#XJX;>"2)>[>Q M.."![0+6.Q#?'0=ZRNT31;"KF#;L#L:1),$0Z$5WC\8Q4IT8ON[]P>Z2*$H2 M-P*86T$480C-8?20$3;8T.P6BP^0"X99K>]9!:G)OA\?D7QX2.K-H['?[HWY)KZ71>4N>LNZ7KWN]UVV5*5T?YB5JOR1 MN;&EK/VF7?3=RBJ9NZ52=5GTH[.S4;^4NNJ]?;.]U]3VZ8:I559K4_F=8<=7 MK1[=K^-A4SQHI^]UH>NGBU[S?Z%ZHM25+O4/E5_TSGK"+!<@[>>^:/;6\OY4>Y*(W.O,WG&OKZN:,YO[2,SXH M?_)F:UV;#[JHE9W(6EU;LU[I:A%NXW]%G_R,)@[;OYL@OK;_)XQF/M>9FIAL M7:JJWL31JB( 5FZI5ZXG*EFJB]Z5>5 V_![_@)M\\]MJ#T4B95]K?\#>Y T> M'\KE.M>UN*DV%_NC!"L"6!$OUI7?-H7._=-S\4X6LLJ4:-ZL(X!# #CL#%"< M3"6!C %D?$3(68 (%SAAYN+*E"L"F0#(I$/(?R(".0*0H\X@9[7)".080(Z[ MBZ1T2P*9 LB4%_):5\ M<+?J055K17&@*)A-,5%S9:TO65?&M5KA ?+$@%D4'Z2VXJLLUDI\4M*M[:;, M4SQDB0&S)BZ+PCPV;O"7BRL?/F_;C\8YU4)$CA@P2\+WYE:^K_4D9)6+][X: MK,(%K\1G55-$9(@!LR*NC^LU@M H&X]'&LW2N*B1PQ8)=$6>IZ MT^8&4M\>U[Z+J:I,MU\WN-,,1,/OBJZL34]^0I'I)'Q"R/ M:V465JZ6.CN4H"%O1,S>N T[?46=RB"/.RM]9?GF0UT,-W=O':*B1R4,#L(IKL3VCM*D(,29@>A=->7 (J)')0P.PAB MME29( (H:&84XJ)+#1B7R0&,-OKKY"%1NS+Q!!FJZ;#=6)=CK^U:SJRT(A]J1C" M;-5T9*$1LX4P9JNF(PN-F"VT=S3S]'D4Z99V/<;(0F-F"QW"?.YU4DQDH3&S MA0X.NVYR#HJ)+#1FMA# W%T2BBPT9K80Q&PU[V-DH3&SA1"F+Y\4$UEHS&PA M@/FWT@N*B2PT9K80P)S._J(+YL9PO?(Q9H$.O?1VV406&GCSY3D]H/( CYK%K.)_*U0VZ+\RHM'J.G'EW)HQWUW&G;[\[#X/!Y.PZK:C>/Y M5UT/ZUTYML-#=RZGRYU-UQ_;\;+LM_6Y7;^WVU++GJ\G[EX_3J7 M_YG8;3;[=?G=K?\00)#,'Q0A*,X?E" HS1^4(2C/'Z00I/,'&039_$$.03Y_ M4 -!S?Q!88DR+@F2)E@3:!V0ZT#@=4"P X'8 D.!'8'Q#L0Z"VHMQ#H+:BW$.@MDQ_;!'H+ZBT$>@OJ+01Z"^HM!'H+ MZBT$>@OJ+01Z"^HM!'H+ZBT$>D?4.Q+H'5'O2*!W1+TC@=YQLEE"H'=$O2.! MWA'UC@1Z1]0[$N@=4>](H'=$O2.!WA'UC@1Z)]0[$>B=4.]$H'="O1.!W@GU M3@1ZI\EF-X'>"?5.!'HGU#L1Z)U0[T2@=T*]$X'>"?5.!'IGU#L3Z)U1[TR@ M=T:],X'>&?7.!'IGU#L3Z)TG?U82Z)U1[TR@=T:],X'>&?7.!'IGU#L3Z*VH MMQ+HK:BW$NBMJ+<2Z*VHMQ+HK:BW$NBMJ+<2Z*V3PR8$>BOJK01Z*^JM!'HK MZJT$>AOJ;01Z&^IM!'H;ZFT$>AOJ;01Z&^IM!'H;ZFT$>AOJ;01ZV^2P(('> MAGH;@=Z&>AN!WHYZ.X'>CGH[@=Z.>CN!WHYZ.X'>CGH[@=Z.>CN!WHYZ.X'> MCGH[@=X^.>Q-H+>CWDZ@=X-Z-P1Z-ZAW\Y-Z#^/7H0RWGN\U/O\GJ1XOWRVW MQU^7WQS86[3T" #Q,P $P M %M#;VYT96YT7U1Y<&5S72YX;6S-V]]NVC 4Q_%70;FM2(CCV&$JO6EWN_5B M+^ EID3DGVRWHV\_$]I*FSJTBDG[WA"![?,[\9$^=UQ_>YZL7QSZ;O";9!?" M]"G+?+VSO?'I.-DAKFQ'UYL0O[J';#+UWCS83*Q6*JO'(=@A+,.Q1G)S?6>W MYK$+B\^'^+-OQV&3.-OY9'%[VGC,VB1FFKJV-B&N9T]#\UO*\B4AC2?G/7[7 M3OXJ;DBR=Q..*W\.>#GW]>BEZ=3P[QANWI,[\X?RYS+C#NO'?CY./$G/UX MW.M(CJ>74RQD76C/O^);8BQ]\?O9X[0;V_QE=KS>'Z/;S_/PV?RX_(Y_G?%; M_0_V(2!]%) ^)*2/$M*'@O2A(7U4D#[6D#[R%:41BJ@YA=2<8FI.036GJ)I3 M6,TIKN846'.*K((BJZ#(*BBR"HJL@B*KH,@J*+(*BJR"(JN@R%I09"THLA84 M60N*K 5%UH(B:T&1M:#(6E!D+2BR2HJLDB*KI,@J*;)*BJR2(JNDR"HILDJ* MK)(B:TF1M:3(6E)D+2FREA192XJL)476DB)K29&UI,BJ*+(JBJR*(JNBR*HH MLBJ*K(HBJZ+(JBBR*HJLFB*KILBJ*;)JBJR:(JNFR*HILFJ*K)HBJZ;(6E%D MK2BR5A19*XJL%476BB)K19&UHLA:462M*+*N*;*N_Z>LW\=Q_X_CYV?:FW9X MS<_F?_K<_ 102P$"% ,4 " #&UL4$L! A0#% @ W)A46(!HDK"1!P ]S M !@ ("!#0@ 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46(DK39,? P #@L !@ ("! MQ1D 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ MW)A46.H%*T%;"@ E6( !@ ("!$2< 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46'HGNIDE P )@< !D M ("!\FL 'AL+W=O&PO=V]R:W-H965T M&UL4$L! A0# M% @ W)A46%(/\D!/! .0H !D ("!PW4 'AL+W=O M@ >&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46+-S M7WM3"P 6!T !D ("!,(0 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46*2;SM=D P UP< !D M ("!M)D 'AL+W=O&PO M=V]R:W-H965T&UL4$L! A0#% @ W)A46"^_58^C P , @ !D ("! M?:0 'AL+W=O&PO=V]R:W-H965TJJ !X;"]W;W)K&UL4$L! A0#% M @ W)A46( H]P@>'P 4F< !D ("!9*T 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46*#$*8_Y @ GP8 !D M ("!$M\ 'AL+W=O&PO=V]R M:W-H965TDMV&H00 ! , M 9 " @2;F !X;"]W;W)K&UL M4$L! A0#% @ W)A46-V$+'N/! OPP !D ("!_NH M 'AL+W=O&PO=V]R:W-H965TA?9F0< + 4 9 M " @:[S !X;"]W;W)K&UL4$L! A0#% @ MW)A46/.=N[N/!0 = T !D ("!?OL 'AL+W=O&UL4$L! A0#% @ W)A46$X%7%QH @ M704 !D ("!$0@! 'AL+W=O&PO=V]R:W-H965T$($70( &X% 9 " @5T. 0!X;"]W;W)K&UL4$L! A0#% @ W)A46-]Y#1[O @ O < !D M ("!\1 ! 'AL+W=O&PO=V]R:W-H M965T&UL4$L! M A0#% @ W)A46"+QL[:V!@ 0$0 !D ("!'QH! 'AL M+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A4 M6*ZK14L0! 11< !D ("!]2H! 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46(2D":[+ @ O0< M !D ("!N#4! 'AL+W=O&PO=V]R:W-H965TZ M00, $* 9 " @= \ 0!X;"]W;W)K&UL4$L! A0#% @ W)A46),L $.^ P >1$ !D M ("!2$ ! 'AL+W=O&PO=V]R:W-H965T MY0( P' 9 M " @0]' 0!X;"]W;W)K&UL4$L! A0# M% @ W)A46$[*7(Y>! B1, !D ("!*TH! 'AL+W=O M&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46!"5 M3Y]8 @ >@4 !D ("!L50! 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W)A46"_,NRE_ @ 408 !D M ("!75T! 'AL+W=O8A^8" 8" &0 @($38 $ >&PO M=V]R:W-H965T&UL4$L! A0#% @ W)A46-/=T;G3 P ?!, !D ("! MPF4! 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% M @ W9A46&=B@H*[!0 6"L !D ("!9',! 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W9A46)H&;V46 P =0D !D M ("!U(L! 'AL+W=O&PO=V]R M:W-H965T&UL M4$L! A0#% @ W9A46)W0JEQ!! T \ !D ("!XY8! M 'AL+W=O&PO=V]R:W-H965T 0!X;"]W;W)K&UL4$L! A0#% @ MW9A46/NY8T+F P T@X !D ("![Z$! 'AL+W=O&PO=V]R:W-H965T&UL4$L! A0#% @ W9A46*5' <>2 @ !P@ !D M ("!:;0! 'AL+W=O&PO&PO7W)E;',O=V]R M:V)O;VLN>&UL+G)E;'-02P$"% ,4 " #=F%18>S86[3T" #Q,P $P M @ $-Q0$ 6T-O;G1E;G1?5'EP97-=+GAM;%!+!08 8P!C + "P; ![QP$ ! end XML 111 Show.js IDEA: XBRL DOCUMENT // Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission. Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105. var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0); e.removeAttribute('id');a.parentNode.appendChild(e)}} if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'} e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}} XML 112 report.css IDEA: XBRL DOCUMENT /* Updated 2009-11-04 */ /* v2.2.0.24 */ /* DefRef Styles */ ..report table.authRefData{ background-color: #def; border: 2px solid #2F4497; font-size: 1em; position: absolute; } ..report table.authRefData a { display: block; font-weight: bold; } ..report table.authRefData p { margin-top: 0px; } ..report table.authRefData .hide { background-color: #2F4497; padding: 1px 3px 0px 0px; text-align: right; } ..report table.authRefData .hide a:hover { background-color: #2F4497; } ..report table.authRefData .body { height: 150px; overflow: auto; width: 400px; } ..report table.authRefData table{ font-size: 1em; } /* Report Styles */ ..pl a, .pl a:visited { color: black; text-decoration: none; } /* table */ ..report { background-color: white; border: 2px solid #acf; clear: both; color: black; font: normal 8pt Helvetica, Arial, san-serif; margin-bottom: 2em; } ..report hr { border: 1px solid #acf; } /* Top labels */ ..report th { background-color: #acf; color: black; font-weight: bold; text-align: center; } ..report th.void { background-color: transparent; color: #000000; font: bold 10pt Helvetica, Arial, san-serif; text-align: left; } ..report .pl { text-align: left; vertical-align: top; white-space: normal; width: 200px; white-space: normal; /* word-wrap: break-word; */ } ..report td.pl a.a { cursor: pointer; display: block; width: 200px; overflow: hidden; } ..report td.pl div.a { width: 200px; } ..report td.pl a:hover { background-color: #ffc; } /* Header rows... */ ..report tr.rh { background-color: #acf; color: black; font-weight: bold; } /* Calendars... */ ..report .rc { background-color: #f0f0f0; } /* Even rows... */ ..report .re, .report .reu { background-color: #def; } ..report .reu td { border-bottom: 1px solid black; } /* Odd rows... */ ..report .ro, .report .rou { background-color: white; } ..report .rou td { border-bottom: 1px solid black; } ..report .rou table td, .report .reu table td { border-bottom: 0px solid black; } /* styles for footnote marker */ ..report .fn { white-space: nowrap; } /* styles for numeric types */ ..report .num, .report .nump { text-align: right; white-space: nowrap; } ..report .nump { padding-left: 2em; } ..report .nump { padding: 0px 0.4em 0px 2em; } /* styles for text types */ ..report .text { text-align: left; white-space: normal; } ..report .text .big { margin-bottom: 1em; width: 17em; } ..report .text .more { display: none; } ..report .text .note { font-style: italic; font-weight: bold; } ..report .text .small { width: 10em; } ..report sup { font-style: italic; } ..report .outerFootnotes { font-size: 1em; } XML 114 FilingSummary.xml IDEA: XBRL DOCUMENT 3.24.0.1 html 175 394 1 false 58 0 false 9 false false R1.htm 0000001 - Document - Cover Sheet http://www.spscommerce.com/role/Cover Cover Cover 1 false false R2.htm 0000002 - Document - Audit Information Sheet http://www.spscommerce.com/role/AuditInformation Audit Information Cover 2 false false R3.htm 0000003 - Statement - Consolidated Balance Sheets Sheet http://www.spscommerce.com/role/ConsolidatedBalanceSheets Consolidated Balance Sheets Statements 3 false false R4.htm 0000004 - Statement - Consolidated Balance Sheets (Parenthetical) Sheet http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical Consolidated Balance Sheets (Parenthetical) Statements 4 false false R5.htm 0000005 - Statement - Consolidated Statements of Comprehensive Income Sheet http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome Consolidated Statements of Comprehensive Income Statements 5 false false R6.htm 0000006 - Statement - Consolidated Statements of Comprehensive Income (Parenthetical) Sheet http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncomeParenthetical Consolidated Statements of Comprehensive Income (Parenthetical) Statements 6 false false R7.htm 0000007 - Statement - Consolidated Statements of Stockholders' Equity Sheet http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity Consolidated Statements of Stockholders' Equity Statements 7 false false R8.htm 0000008 - Statement - Consolidated Statements of Cash Flows Sheet http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows Consolidated Statements of Cash Flows Statements 8 false false R9.htm 0000009 - Disclosure - General Sheet http://www.spscommerce.com/role/General General Notes 9 false false R10.htm 0000010 - Disclosure - Business Acquisitions Sheet http://www.spscommerce.com/role/BusinessAcquisitions Business Acquisitions Notes 10 false false R11.htm 0000011 - Disclosure - Revenue Sheet http://www.spscommerce.com/role/Revenue Revenue Notes 11 false false R12.htm 0000012 - Disclosure - Deferred Costs Sheet http://www.spscommerce.com/role/DeferredCosts Deferred Costs Notes 12 false false R13.htm 0000013 - Disclosure - Fair Value Measurements Sheet http://www.spscommerce.com/role/FairValueMeasurements Fair Value Measurements Notes 13 false false R14.htm 0000014 - Disclosure - Allowance for Credit Losses Sheet http://www.spscommerce.com/role/AllowanceforCreditLosses Allowance for Credit Losses Notes 14 false false R15.htm 0000015 - Disclosure - Property and Equipment, Net Sheet http://www.spscommerce.com/role/PropertyandEquipmentNet Property and Equipment, Net Notes 15 false false R16.htm 0000016 - Disclosure - Goodwill and Intangible Assets, Net Sheet http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNet Goodwill and Intangible Assets, Net Notes 16 false false R17.htm 0000017 - Disclosure - Commitments and Contingencies Sheet http://www.spscommerce.com/role/CommitmentsandContingencies Commitments and Contingencies Notes 17 false false R18.htm 0000018 - Disclosure - Stockholders' Equity Sheet http://www.spscommerce.com/role/StockholdersEquity Stockholders' Equity Notes 18 false false R19.htm 0000019 - Disclosure - Stock-Based Compensation Sheet http://www.spscommerce.com/role/StockBasedCompensation Stock-Based Compensation Notes 19 false false R20.htm 0000020 - Disclosure - Income Taxes Sheet http://www.spscommerce.com/role/IncomeTaxes Income Taxes Notes 20 false false R21.htm 0000021 - Disclosure - Other Income and Expense Sheet http://www.spscommerce.com/role/OtherIncomeandExpense Other Income and Expense Notes 21 false false R22.htm 0000022 - Disclosure - Net Income Per Share Sheet http://www.spscommerce.com/role/NetIncomePerShare Net Income Per Share Notes 22 false false R23.htm 0000023 - Disclosure - Retirement Savings Plan Sheet http://www.spscommerce.com/role/RetirementSavingsPlan Retirement Savings Plan Notes 23 false false R24.htm 0000024 - Disclosure - Geographic Information Sheet http://www.spscommerce.com/role/GeographicInformation Geographic Information Notes 24 false false R25.htm 0000025 - Disclosure - Related Party Transactions Sheet http://www.spscommerce.com/role/RelatedPartyTransactions Related Party Transactions Notes 25 false false R26.htm 995410 - Disclosure - Pay vs Performance Disclosure Sheet http://xbrl.sec.gov/ecd/role/PvpDisclosure Pay vs Performance Disclosure Notes 26 false false R27.htm 995445 - Disclosure - Insider Trading Arrangements Sheet http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements Insider Trading Arrangements Notes 27 false false R28.htm 9954471 - Disclosure - General (Policies) Sheet http://www.spscommerce.com/role/GeneralPolicies General (Policies) Policies 28 false false R29.htm 9954472 - Disclosure - General (Tables) Sheet http://www.spscommerce.com/role/GeneralTables General (Tables) Tables http://www.spscommerce.com/role/General 29 false false R30.htm 9954473 - Disclosure - Business Acquisitions (Tables) Sheet http://www.spscommerce.com/role/BusinessAcquisitionsTables Business Acquisitions (Tables) Tables http://www.spscommerce.com/role/BusinessAcquisitions 30 false false R31.htm 9954474 - Disclosure - Revenue (Tables) Sheet http://www.spscommerce.com/role/RevenueTables Revenue (Tables) Tables http://www.spscommerce.com/role/Revenue 31 false false R32.htm 9954475 - Disclosure - Deferred Costs (Tables) Sheet http://www.spscommerce.com/role/DeferredCostsTables Deferred Costs (Tables) Tables http://www.spscommerce.com/role/DeferredCosts 32 false false R33.htm 9954476 - Disclosure - Fair Value Measurements (Tables) Sheet http://www.spscommerce.com/role/FairValueMeasurementsTables Fair Value Measurements (Tables) Tables http://www.spscommerce.com/role/FairValueMeasurements 33 false false R34.htm 9954477 - Disclosure - Allowance for Credit Losses (Tables) Sheet http://www.spscommerce.com/role/AllowanceforCreditLossesTables Allowance for Credit Losses (Tables) Tables http://www.spscommerce.com/role/AllowanceforCreditLosses 34 false false R35.htm 9954478 - Disclosure - Property and Equipment, Net (Tables) Sheet http://www.spscommerce.com/role/PropertyandEquipmentNetTables Property and Equipment, Net (Tables) Tables http://www.spscommerce.com/role/PropertyandEquipmentNet 35 false false R36.htm 9954479 - Disclosure - Goodwill and Intangible Assets, Net (Tables) Sheet http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables Goodwill and Intangible Assets, Net (Tables) Tables http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNet 36 false false R37.htm 9954480 - Disclosure - Commitments and Contingencies (Tables) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesTables Commitments and Contingencies (Tables) Tables http://www.spscommerce.com/role/CommitmentsandContingencies 37 false false R38.htm 9954481 - Disclosure - Stockholders' Equity (Tables) Sheet http://www.spscommerce.com/role/StockholdersEquityTables Stockholders' Equity (Tables) Tables http://www.spscommerce.com/role/StockholdersEquity 38 false false R39.htm 9954482 - Disclosure - Stock-Based Compensation (Tables) Sheet http://www.spscommerce.com/role/StockBasedCompensationTables Stock-Based Compensation (Tables) Tables http://www.spscommerce.com/role/StockBasedCompensation 39 false false R40.htm 9954483 - Disclosure - Income Taxes (Tables) Sheet http://www.spscommerce.com/role/IncomeTaxesTables Income Taxes (Tables) Tables http://www.spscommerce.com/role/IncomeTaxes 40 false false R41.htm 9954484 - Disclosure - Other Income and Expense (Tables) Sheet http://www.spscommerce.com/role/OtherIncomeandExpenseTables Other Income and Expense (Tables) Tables http://www.spscommerce.com/role/OtherIncomeandExpense 41 false false R42.htm 9954485 - Disclosure - Net Income Per Share (Tables) Sheet http://www.spscommerce.com/role/NetIncomePerShareTables Net Income Per Share (Tables) Tables http://www.spscommerce.com/role/NetIncomePerShare 42 false false R43.htm 9954486 - Disclosure - Retirement Contributions (Tables) Sheet http://www.spscommerce.com/role/RetirementContributionsTables Retirement Contributions (Tables) Tables 43 false false R44.htm 9954487 - Disclosure - Geographic Information (Tables) Sheet http://www.spscommerce.com/role/GeographicInformationTables Geographic Information (Tables) Tables http://www.spscommerce.com/role/GeographicInformation 44 false false R45.htm 9954488 - Disclosure - Related Party Transactions (Tables) Sheet http://www.spscommerce.com/role/RelatedPartyTransactionsTables Related Party Transactions (Tables) Tables http://www.spscommerce.com/role/RelatedPartyTransactions 45 false false R46.htm 9954489 - Disclosure - General - Narrative (Details) Sheet http://www.spscommerce.com/role/GeneralNarrativeDetails General - Narrative (Details) Details 46 false false R47.htm 9954490 - Disclosure - General - Summary of Estimated Useful Lives of Property and Equipment (Details) Sheet http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails General - Summary of Estimated Useful Lives of Property and Equipment (Details) Details 47 false false R48.htm 9954491 - Disclosure - General - Summary of Estimated Useful Lives of Intangible Assets (Details) Sheet http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails General - Summary of Estimated Useful Lives of Intangible Assets (Details) Details 48 false false R49.htm 9954492 - Disclosure - Business Acquisitions - Narrative (Details) Sheet http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails Business Acquisitions - Narrative (Details) Details 49 false false R50.htm 9954493 - Disclosure - Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Details) Sheet http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Details) Details 50 false false R51.htm 9954494 - Disclosure - Business Acquisitions - Schedule of Estimated Fair Value of Purchased Intangible Assets and their Estimated Useful Lives (Details) Sheet http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails Business Acquisitions - Schedule of Estimated Fair Value of Purchased Intangible Assets and their Estimated Useful Lives (Details) Details 51 false false R52.htm 9954495 - Disclosure - Revenue - Summary of Revenues by Revenue Stream (Details) Sheet http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails Revenue - Summary of Revenues by Revenue Stream (Details) Details 52 false false R53.htm 9954496 - Disclosure - Revenue - Narrative (Details) Sheet http://www.spscommerce.com/role/RevenueNarrativeDetails Revenue - Narrative (Details) Details 53 false false R54.htm 9954497 - Disclosure - Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details) Sheet http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details) Details 54 false false R55.htm 9954498 - Disclosure - Deferred Costs - Summary of Deferred Costs Activity (Details) Sheet http://www.spscommerce.com/role/DeferredCostsSummaryofDeferredCostsActivityDetails Deferred Costs - Summary of Deferred Costs Activity (Details) Details 55 false false R56.htm 9954499 - Disclosure - Fair Value Measurements (Details) Sheet http://www.spscommerce.com/role/FairValueMeasurementsDetails Fair Value Measurements (Details) Details http://www.spscommerce.com/role/FairValueMeasurementsTables 56 false false R57.htm 9954500 - Disclosure - Allowance for Credit Losses (Details) Sheet http://www.spscommerce.com/role/AllowanceforCreditLossesDetails Allowance for Credit Losses (Details) Details http://www.spscommerce.com/role/AllowanceforCreditLossesTables 57 false false R58.htm 9954501 - Disclosure - Property and Equipment, Net - Schedule of Property and Equipment, Net (Details) Sheet http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails Property and Equipment, Net - Schedule of Property and Equipment, Net (Details) Details 58 false false R59.htm 9954502 - Disclosure - Property and Equipment, Net - Schedule of Depreciation and Amortization Expense of Property and Equipment (Details) Sheet http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofDepreciationandAmortizationExpenseofPropertyandEquipmentDetails Property and Equipment, Net - Schedule of Depreciation and Amortization Expense of Property and Equipment (Details) Details 59 false false R60.htm 9954503 - Disclosure - Goodwill and Intangible Assets, Net - Schedule of Activity in Goodwill (Details) Sheet http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails Goodwill and Intangible Assets, Net - Schedule of Activity in Goodwill (Details) Details 60 false false R61.htm 9954504 - Disclosure - Goodwill and Intangible Assets, Net - Intangible Assets (Details) Sheet http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails Goodwill and Intangible Assets, Net - Intangible Assets (Details) Details 61 false false R62.htm 9954505 - Disclosure - Goodwill and Intangible Assets, Net - Schedule of Amortization Expense of Intangible Assets (Details) Sheet http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofAmortizationExpenseofIntangibleAssetsDetails Goodwill and Intangible Assets, Net - Schedule of Amortization Expense of Intangible Assets (Details) Details 62 false false R63.htm 9954506 - Disclosure - Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets (Details) Sheet http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets (Details) Details 63 false false R64.htm 9954507 - Disclosure - Commitments and Contingencies - Narrative (Details) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails Commitments and Contingencies - Narrative (Details) Details 64 false false R65.htm 9954508 - Disclosure - Commitments and Contingencies - Components of Lease Expense (Details) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails Commitments and Contingencies - Components of Lease Expense (Details) Details 65 false false R66.htm 9954509 - Disclosure - Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details) Details 66 false false R67.htm 9954510 - Disclosure - Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Details) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofSupplementalBalanceSheetInformationRelatedtoLeasesDetails Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Details) Details 67 false false R68.htm 9954511 - Disclosure - Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details) Details 68 false false R69.htm 9954512 - Disclosure - Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details) Sheet http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details) Details 69 false false R70.htm 9954513 - Disclosure - Stockholders' Equity - Share Repurchase Plan (Details) Sheet http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails Stockholders' Equity - Share Repurchase Plan (Details) Details 70 false false R71.htm 9954514 - Disclosure - Stockholders' Equity - Summary of Stock Repurchase Activity by Year (Details) Sheet http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyYearDetails Stockholders' Equity - Summary of Stock Repurchase Activity by Year (Details) Details 71 false false R72.htm 9954515 - Disclosure - Stock-Based Compensation - Narrative (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails Stock-Based Compensation - Narrative (Details) Details 72 false false R73.htm 9954516 - Disclosure - Stock-Based Compensation - Stock-Based Compensation Expense (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails Stock-Based Compensation - Stock-Based Compensation Expense (Details) Details 73 false false R74.htm 9954517 - Disclosure - Stock-Based Compensation - Stock Option Activity (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails Stock-Based Compensation - Stock Option Activity (Details) Details 74 false false R75.htm 9954518 - Disclosure - Stock-Based Compensation - Summary of Additional Information Related to Stock Options (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationSummaryofAdditionalInformationRelatedtoStockOptionsDetails Stock-Based Compensation - Summary of Additional Information Related to Stock Options (Details) Details 75 false false R76.htm 9954519 - Disclosure - Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Details) Details 76 false false R77.htm 9954520 - Disclosure - Stock-Based Compensation - PSU, RSU, RSA, and DSU (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails Stock-Based Compensation - PSU, RSU, RSA, and DSU (Details) Details 77 false false R78.htm 9954521 - Disclosure - Stock-Based Compensation - Summary of ESPP Activity (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails Stock-Based Compensation - Summary of ESPP Activity (Details) Details 78 false false R79.htm 9954522 - Disclosure - Stock-Based Compensation - Fair Value Estimation of Common Stock, Assumptions (Details) Sheet http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails Stock-Based Compensation - Fair Value Estimation of Common Stock, Assumptions (Details) Details 79 false false R80.htm 9954523 - Disclosure - Income Taxes - Schedule of Provision for Income Taxes (Details) Sheet http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails Income Taxes - Schedule of Provision for Income Taxes (Details) Details 80 false false R81.htm 9954524 - Disclosure - Income Taxes - Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income (Details) Sheet http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails Income Taxes - Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income (Details) Details 81 false false R82.htm 9954525 - Disclosure - Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Details) Sheet http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Details) Details 82 false false R83.htm 9954526 - Disclosure - Income Taxes - Narrative (Details) Sheet http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails Income Taxes - Narrative (Details) Details 83 false false R84.htm 9954527 - Disclosure - Other Income and Expense - Summary of Other Income (Expense), Net (Details) Sheet http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails Other Income and Expense - Summary of Other Income (Expense), Net (Details) Details 84 false false R85.htm 9954528 - Disclosure - Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Details) Sheet http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Details) Details 85 false false R86.htm 9954529 - Disclosure - Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details) Sheet http://www.spscommerce.com/role/NetIncomePerShareScheduleofAntidilutiveCommonSharesExcludedfromCalculationofDilutedNetIncomePerShareDetails Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details) Details 86 false false R87.htm 9954530 - Disclosure - Retirement Contributions - Narrative (Details) Sheet http://www.spscommerce.com/role/RetirementContributionsNarrativeDetails Retirement Contributions - Narrative (Details) Details 87 false false R88.htm 9954531 - Disclosure - Retirement Contributions - Schedule of Total Contribution to the Plan (Details) Sheet http://www.spscommerce.com/role/RetirementContributionsScheduleofTotalContributiontothePlanDetails Retirement Contributions - Schedule of Total Contribution to the Plan (Details) Details 88 false false R89.htm 9954532 - Disclosure - Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes (Details) Sheet http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes (Details) Details 89 false false R90.htm 9954533 - Disclosure - Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States (Details) Sheet http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States (Details) Details 90 false false R91.htm 9954534 - Disclosure - Related Party Transactions - Summary of Contributions to Foundation (Details) Sheet http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails Related Party Transactions - Summary of Contributions to Foundation (Details) Details 91 false false All Reports Book All Reports spsc-20231231.htm spsc-20231231.xsd spsc-20231231_cal.xml spsc-20231231_def.xml spsc-20231231_lab.xml spsc-20231231_pre.xml spsc-20231231_g1.jpg spsc-20231231_g2.jpg spsc-20231231_g3.jpg spsc-20231231_g4.jpg http://fasb.org/srt/2023 http://fasb.org/us-gaap/2023 http://xbrl.sec.gov/dei/2023 http://xbrl.sec.gov/ecd/2023 true true JSON 116 MetaLinks.json IDEA: XBRL DOCUMENT { "version": "2.2", "instance": { "spsc-20231231.htm": { "nsprefix": "spsc", "nsuri": "http://www.spscommerce.com/20231231", "dts": { "inline": { "local": [ "spsc-20231231.htm" ] }, "schema": { "local": [ "spsc-20231231.xsd" ], "remote": [ "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd", "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd", "http://www.xbrl.org/2003/xl-2003-12-31.xsd", "http://www.xbrl.org/2003/xlink-2003-12-31.xsd", "http://www.xbrl.org/2005/xbrldt-2005.xsd", "http://www.xbrl.org/2006/ref-2006-02-27.xsd", "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd", "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd", "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd", "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd", "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd", "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-roles-2023.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-roles-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd", "https://xbrl.sec.gov/country/2023/country-2023.xsd", "https://xbrl.sec.gov/dei/2023/dei-2023.xsd", "https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd" ] }, "calculationLink": { "local": [ "spsc-20231231_cal.xml" ] }, "definitionLink": { "local": [ "spsc-20231231_def.xml" ] }, "labelLink": { "local": [ "spsc-20231231_lab.xml" ] }, "presentationLink": { "local": [ "spsc-20231231_pre.xml" ] } }, "keyStandard": 349, "keyCustom": 45, "axisStandard": 20, "axisCustom": 0, "memberStandard": 35, "memberCustom": 23, "hidden": { "total": 4, "http://xbrl.sec.gov/dei/2023": 4 }, "contextCount": 175, "entityCount": 1, "segmentCount": 58, "elementCount": 662, "unitCount": 9, "baseTaxonomies": { "http://fasb.org/us-gaap/2023": 881, "http://xbrl.sec.gov/dei/2023": 39, "http://xbrl.sec.gov/ecd/2023": 4, "http://fasb.org/srt/2023": 1 }, "report": { "R1": { "role": "http://www.spscommerce.com/role/Cover", "longName": "0000001 - Document - Cover", "shortName": "Cover", "isDefault": "true", "groupType": "document", "subGroupType": "", "menuCat": "Cover", "order": "1", "firstAnchor": { "contextRef": "c-1", "name": "dei:DocumentType", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "dei:DocumentType", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R2": { "role": "http://www.spscommerce.com/role/AuditInformation", "longName": "0000002 - Document - Audit Information", "shortName": "Audit Information", "isDefault": "false", "groupType": "document", "subGroupType": "", "menuCat": "Cover", "order": "2", "firstAnchor": { "contextRef": "c-1", "name": "dei:AuditorFirmId", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "dei:AuditorFirmId", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R3": { "role": "http://www.spscommerce.com/role/ConsolidatedBalanceSheets", "longName": "0000003 - Statement - Consolidated Balance Sheets", "shortName": "Consolidated Balance Sheets", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "3", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R4": { "role": "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical", "longName": "0000004 - Statement - Consolidated Balance Sheets (Parenthetical)", "shortName": "Consolidated Balance Sheets (Parenthetical)", "isDefault": "false", "groupType": "statement", "subGroupType": "parenthetical", "menuCat": "Statements", "order": "4", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:PreferredStockParOrStatedValuePerShare", "unitRef": "usdPerShare", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:PreferredStockParOrStatedValuePerShare", "unitRef": "usdPerShare", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R5": { "role": "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "longName": "0000005 - Statement - Consolidated Statements of Comprehensive Income", "shortName": "Consolidated Statements of Comprehensive Income", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "5", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:CostOfRevenue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R6": { "role": "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncomeParenthetical", "longName": "0000006 - Statement - Consolidated Statements of Comprehensive Income (Parenthetical)", "shortName": "Consolidated Statements of Comprehensive Income (Parenthetical)", "isDefault": "false", "groupType": "statement", "subGroupType": "parenthetical", "menuCat": "Statements", "order": "6", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R7": { "role": "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "longName": "0000007 - Statement - Consolidated Statements of Stockholders' Equity", "shortName": "Consolidated Statements of Stockholders' Equity", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "7", "firstAnchor": { "contextRef": "c-8", "name": "us-gaap:CommonStockSharesOutstanding", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-8", "name": "us-gaap:CommonStockSharesOutstanding", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R8": { "role": "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows", "longName": "0000008 - Statement - Consolidated Statements of Cash Flows", "shortName": "Consolidated Statements of Cash Flows", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "8", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:NetIncomeLoss", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DeferredIncomeTaxExpenseBenefit", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R9": { "role": "http://www.spscommerce.com/role/General", "longName": "0000009 - Disclosure - General", "shortName": "General", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "9", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R10": { "role": "http://www.spscommerce.com/role/BusinessAcquisitions", "longName": "0000010 - Disclosure - Business Acquisitions", "shortName": "Business Acquisitions", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "10", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:BusinessCombinationDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:BusinessCombinationDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R11": { "role": "http://www.spscommerce.com/role/Revenue", "longName": "0000011 - Disclosure - Revenue", "shortName": "Revenue", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "11", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:RevenueFromContractWithCustomerTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:RevenueFromContractWithCustomerTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R12": { "role": "http://www.spscommerce.com/role/DeferredCosts", "longName": "0000012 - Disclosure - Deferred Costs", "shortName": "Deferred Costs", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "12", "firstAnchor": { "contextRef": "c-1", "name": "spsc:DeferredCostsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:DeferredCostsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R13": { "role": "http://www.spscommerce.com/role/FairValueMeasurements", "longName": "0000013 - Disclosure - Fair Value Measurements", "shortName": "Fair Value Measurements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "13", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:FinancialInstrumentsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:FinancialInstrumentsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R14": { "role": "http://www.spscommerce.com/role/AllowanceforCreditLosses", "longName": "0000014 - Disclosure - Allowance for Credit Losses", "shortName": "Allowance for Credit Losses", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "14", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:AllowanceForCreditLossesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:AllowanceForCreditLossesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R15": { "role": "http://www.spscommerce.com/role/PropertyandEquipmentNet", "longName": "0000015 - Disclosure - Property and Equipment, Net", "shortName": "Property and Equipment, Net", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "15", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R16": { "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNet", "longName": "0000016 - Disclosure - Goodwill and Intangible Assets, Net", "shortName": "Goodwill and Intangible Assets, Net", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "16", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R17": { "role": "http://www.spscommerce.com/role/CommitmentsandContingencies", "longName": "0000017 - Disclosure - Commitments and Contingencies", "shortName": "Commitments and Contingencies", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "17", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R18": { "role": "http://www.spscommerce.com/role/StockholdersEquity", "longName": "0000018 - Disclosure - Stockholders' Equity", "shortName": "Stockholders' Equity", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "18", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R19": { "role": "http://www.spscommerce.com/role/StockBasedCompensation", "longName": "0000019 - Disclosure - Stock-Based Compensation", "shortName": "Stock-Based Compensation", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "19", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R20": { "role": "http://www.spscommerce.com/role/IncomeTaxes", "longName": "0000020 - Disclosure - Income Taxes", "shortName": "Income Taxes", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "20", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:IncomeTaxDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:IncomeTaxDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R21": { "role": "http://www.spscommerce.com/role/OtherIncomeandExpense", "longName": "0000021 - Disclosure - Other Income and Expense", "shortName": "Other Income and Expense", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "21", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:OtherNonoperatingIncomeAndExpenseTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:OtherNonoperatingIncomeAndExpenseTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R22": { "role": "http://www.spscommerce.com/role/NetIncomePerShare", "longName": "0000022 - Disclosure - Net Income Per Share", "shortName": "Net Income Per Share", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "22", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:EarningsPerShareTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:EarningsPerShareTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R23": { "role": "http://www.spscommerce.com/role/RetirementSavingsPlan", "longName": "0000023 - Disclosure - Retirement Savings Plan", "shortName": "Retirement Savings Plan", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "23", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R24": { "role": "http://www.spscommerce.com/role/GeographicInformation", "longName": "0000024 - Disclosure - Geographic Information", "shortName": "Geographic Information", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "24", "firstAnchor": { "contextRef": "c-1", "name": "spsc:GeographicInformationTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:GeographicInformationTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R25": { "role": "http://www.spscommerce.com/role/RelatedPartyTransactions", "longName": "0000025 - Disclosure - Related Party Transactions", "shortName": "Related Party Transactions", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "25", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:RelatedPartyTransactionsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:RelatedPartyTransactionsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R26": { "role": "http://xbrl.sec.gov/ecd/role/PvpDisclosure", "longName": "995410 - Disclosure - Pay vs Performance Disclosure", "shortName": "Pay vs Performance Disclosure", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "26", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:NetIncomeLoss", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": null }, "R27": { "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "longName": "995445 - Disclosure - Insider Trading Arrangements", "shortName": "Insider Trading Arrangements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "27", "firstAnchor": { "contextRef": "c-175", "name": "ecd:Rule10b51ArrAdoptedFlag", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-175", "name": "ecd:Rule10b51ArrAdoptedFlag", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R28": { "role": "http://www.spscommerce.com/role/GeneralPolicies", "longName": "9954471 - Disclosure - General (Policies)", "shortName": "General (Policies)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "policies", "menuCat": "Policies", "order": "28", "firstAnchor": { "contextRef": "c-1", "name": "spsc:BusinessDescriptionPolicyPolicyTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:BusinessDescriptionPolicyPolicyTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R29": { "role": "http://www.spscommerce.com/role/GeneralTables", "longName": "9954472 - Disclosure - General (Tables)", "shortName": "General (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "29", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:PropertyPlantAndEquipmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R30": { "role": "http://www.spscommerce.com/role/BusinessAcquisitionsTables", "longName": "9954473 - Disclosure - Business Acquisitions (Tables)", "shortName": "Business Acquisitions (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "30", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R31": { "role": "http://www.spscommerce.com/role/RevenueTables", "longName": "9954474 - Disclosure - Revenue (Tables)", "shortName": "Revenue (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "31", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DisaggregationOfRevenueTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DisaggregationOfRevenueTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R32": { "role": "http://www.spscommerce.com/role/DeferredCostsTables", "longName": "9954475 - Disclosure - Deferred Costs (Tables)", "shortName": "Deferred Costs (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "32", "firstAnchor": { "contextRef": "c-1", "name": "spsc:DeferredCostsAndAmortizationTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:DeferredCostsAndAmortizationTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R33": { "role": "http://www.spscommerce.com/role/FairValueMeasurementsTables", "longName": "9954476 - Disclosure - Fair Value Measurements (Tables)", "shortName": "Fair Value Measurements (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "33", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R34": { "role": "http://www.spscommerce.com/role/AllowanceforCreditLossesTables", "longName": "9954477 - Disclosure - Allowance for Credit Losses (Tables)", "shortName": "Allowance for Credit Losses (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "34", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R35": { "role": "http://www.spscommerce.com/role/PropertyandEquipmentNetTables", "longName": "9954478 - Disclosure - Property and Equipment, Net (Tables)", "shortName": "Property and Equipment, Net (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "35", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:PropertyPlantAndEquipmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:DepreciationAndAmortizationExpenseOfPropertyAndEquipmentTableTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R36": { "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables", "longName": "9954479 - Disclosure - Goodwill and Intangible Assets, Net (Tables)", "shortName": "Goodwill and Intangible Assets, Net (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "36", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfGoodwillTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfGoodwillTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R37": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesTables", "longName": "9954480 - Disclosure - Commitments and Contingencies (Tables)", "shortName": "Commitments and Contingencies (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "37", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:LeaseCostTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:LeaseCostTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R38": { "role": "http://www.spscommerce.com/role/StockholdersEquityTables", "longName": "9954481 - Disclosure - Stockholders' Equity (Tables)", "shortName": "Stockholders' Equity (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "38", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfTreasuryStockByClassTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfTreasuryStockByClassTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R39": { "role": "http://www.spscommerce.com/role/StockBasedCompensationTables", "longName": "9954482 - Disclosure - Stock-Based Compensation (Tables)", "shortName": "Stock-Based Compensation (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "39", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R40": { "role": "http://www.spscommerce.com/role/IncomeTaxesTables", "longName": "9954483 - Disclosure - Income Taxes (Tables)", "shortName": "Income Taxes (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "40", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R41": { "role": "http://www.spscommerce.com/role/OtherIncomeandExpenseTables", "longName": "9954484 - Disclosure - Other Income and Expense (Tables)", "shortName": "Other Income and Expense (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "41", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R42": { "role": "http://www.spscommerce.com/role/NetIncomePerShareTables", "longName": "9954485 - Disclosure - Net Income Per Share (Tables)", "shortName": "Net Income Per Share (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "42", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R43": { "role": "http://www.spscommerce.com/role/RetirementContributionsTables", "longName": "9954486 - Disclosure - Retirement Contributions (Tables)", "shortName": "Retirement Contributions (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "43", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DefinedContributionPlanDisclosuresTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DefinedContributionPlanDisclosuresTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R44": { "role": "http://www.spscommerce.com/role/GeographicInformationTables", "longName": "9954487 - Disclosure - Geographic Information (Tables)", "shortName": "Geographic Information (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "44", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R45": { "role": "http://www.spscommerce.com/role/RelatedPartyTransactionsTables", "longName": "9954488 - Disclosure - Related Party Transactions (Tables)", "shortName": "Related Party Transactions (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "45", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfRelatedPartyTransactionsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfRelatedPartyTransactionsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R46": { "role": "http://www.spscommerce.com/role/GeneralNarrativeDetails", "longName": "9954489 - Disclosure - General - Narrative (Details)", "shortName": "General - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "46", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:NumberOfReportableSegments", "unitRef": "segment", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "div", "us-gaap:SegmentReportingPolicyPolicyTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:NumberOfReportableSegments", "unitRef": "segment", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "div", "us-gaap:SegmentReportingPolicyPolicyTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R47": { "role": "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "longName": "9954490 - Disclosure - General - Summary of Estimated Useful Lives of Property and Equipment (Details)", "shortName": "General - Summary of Estimated Useful Lives of Property and Equipment (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "47", "firstAnchor": { "contextRef": "c-44", "name": "us-gaap:PropertyPlantAndEquipmentUsefulLife", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:PropertyPlantAndEquipmentTextBlock", "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-44", "name": "us-gaap:PropertyPlantAndEquipmentUsefulLife", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:PropertyPlantAndEquipmentTextBlock", "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R48": { "role": "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "longName": "9954491 - Disclosure - General - Summary of Estimated Useful Lives of Intangible Assets (Details)", "shortName": "General - Summary of Estimated Useful Lives of Intangible Assets (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "48", "firstAnchor": { "contextRef": "c-48", "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "td", "tr", "table", "div", "us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsTableTextBlock", "us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-48", "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "td", "tr", "table", "div", "us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsTableTextBlock", "us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R49": { "role": "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "longName": "9954492 - Disclosure - Business Acquisitions - Narrative (Details)", "shortName": "Business Acquisitions - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "49", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:Goodwill", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfGoodwillTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-52", "name": "us-gaap:BusinessCombinationConsiderationTransferred1", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R50": { "role": "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "longName": "9954493 - Disclosure - Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Details)", "shortName": "Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "50", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:Goodwill", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfGoodwillTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-55", "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R51": { "role": "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails", "longName": "9954494 - Disclosure - Business Acquisitions - Schedule of Estimated Fair Value of Purchased Intangible Assets and their Estimated Useful Lives (Details)", "shortName": "Business Acquisitions - Schedule of Estimated Fair Value of Purchased Intangible Assets and their Estimated Useful Lives (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "51", "firstAnchor": { "contextRef": "c-60", "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-60", "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R52": { "role": "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails", "longName": "9954495 - Disclosure - Revenue - Summary of Revenues by Revenue Stream (Details)", "shortName": "Revenue - Summary of Revenues by Revenue Stream (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "52", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-80", "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:DisaggregationOfRevenueTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R53": { "role": "http://www.spscommerce.com/role/RevenueNarrativeDetails", "longName": "9954496 - Disclosure - Revenue - Narrative (Details)", "shortName": "Revenue - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "53", "firstAnchor": { "contextRef": "c-1", "name": "spsc:RecurringRevenuesTimingOfBillingsLatestPeriod", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:RecurringRevenuesTimingOfBillingsLatestPeriod", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R54": { "role": "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails", "longName": "9954497 - Disclosure - Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details)", "shortName": "Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "54", "firstAnchor": { "contextRef": "c-88", "name": "us-gaap:ContractWithCustomerLiability", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-89", "name": "us-gaap:ContractWithCustomerLiability", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R55": { "role": "http://www.spscommerce.com/role/DeferredCostsSummaryofDeferredCostsActivityDetails", "longName": "9954498 - Disclosure - Deferred Costs - Summary of Deferred Costs Activity (Details)", "shortName": "Deferred Costs - Summary of Deferred Costs Activity (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "55", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:DeferredCostsCurrentAndNoncurrent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "spsc:DeferredCostsAndAmortizationTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-24", "name": "us-gaap:DeferredCostsCurrentAndNoncurrent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "spsc:DeferredCostsAndAmortizationTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R56": { "role": "http://www.spscommerce.com/role/FairValueMeasurementsDetails", "longName": "9954499 - Disclosure - Fair Value Measurements (Details)", "shortName": "Fair Value Measurements (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "56", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R57": { "role": "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails", "longName": "9954500 - Disclosure - Allowance for Credit Losses (Details)", "shortName": "Allowance for Credit Losses (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "57", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-13", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R58": { "role": "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails", "longName": "9954501 - Disclosure - Property and Equipment, Net - Schedule of Property and Equipment, Net (Details)", "shortName": "Property and Equipment, Net - Schedule of Property and Equipment, Net (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "58", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:PropertyPlantAndEquipmentGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:PropertyPlantAndEquipmentGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R59": { "role": "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofDepreciationandAmortizationExpenseofPropertyandEquipmentDetails", "longName": "9954502 - Disclosure - Property and Equipment, Net - Schedule of Depreciation and Amortization Expense of Property and Equipment (Details)", "shortName": "Property and Equipment, Net - Schedule of Depreciation and Amortization Expense of Property and Equipment (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "59", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DepreciationDepletionAndAmortization", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "spsc:DepreciationAndAmortizationExpenseOfPropertyAndEquipmentTableTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": null }, "R60": { "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails", "longName": "9954503 - Disclosure - Goodwill and Intangible Assets, Net - Schedule of Activity in Goodwill (Details)", "shortName": "Goodwill and Intangible Assets, Net - Schedule of Activity in Goodwill (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "60", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:Goodwill", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:GoodwillAcquiredDuringPeriod", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfGoodwillTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R61": { "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails", "longName": "9954504 - Disclosure - Goodwill and Intangible Assets, Net - Intangible Assets (Details)", "shortName": "Goodwill and Intangible Assets, Net - Intangible Assets (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "61", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:FiniteLivedIntangibleAssetsGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:FiniteLivedIntangibleAssetsGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R62": { "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofAmortizationExpenseofIntangibleAssetsDetails", "longName": "9954505 - Disclosure - Goodwill and Intangible Assets, Net - Schedule of Amortization Expense of Intangible Assets (Details)", "shortName": "Goodwill and Intangible Assets, Net - Schedule of Amortization Expense of Intangible Assets (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "62", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:AmortizationOfIntangibleAssets", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": null }, "R63": { "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails", "longName": "9954506 - Disclosure - Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets (Details)", "shortName": "Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "63", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R64": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails", "longName": "9954507 - Disclosure - Commitments and Contingencies - Narrative (Details)", "shortName": "Commitments and Contingencies - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "64", "firstAnchor": { "contextRef": "c-4", "name": "spsc:LesseeOperatingLeaseAreaOfLeasedSpace", "unitRef": "sqft", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "spsc:LesseeOperatingLeaseAreaOfLeasedSpace", "unitRef": "sqft", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R65": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails", "longName": "9954508 - Disclosure - Commitments and Contingencies - Components of Lease Expense (Details)", "shortName": "Commitments and Contingencies - Components of Lease Expense (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "65", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:OperatingLeaseCost", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LeaseCostTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:OperatingLeaseCost", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LeaseCostTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R66": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails", "longName": "9954509 - Disclosure - Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details)", "shortName": "Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "66", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:OperatingLeasePayments", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "spsc:ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:OperatingLeasePayments", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "spsc:ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R67": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofSupplementalBalanceSheetInformationRelatedtoLeasesDetails", "longName": "9954510 - Disclosure - Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Details)", "shortName": "Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "67", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "spsc:ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "spsc:ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R68": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails", "longName": "9954511 - Disclosure - Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details)", "shortName": "Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "68", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R69": { "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails", "longName": "9954512 - Disclosure - Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details)", "shortName": "Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "69", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:PurchaseObligationDueInNextTwelveMonths", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:PurchaseObligationDueInNextTwelveMonths", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R70": { "role": "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails", "longName": "9954513 - Disclosure - Stockholders' Equity - Share Repurchase Plan (Details)", "shortName": "Stockholders' Equity - Share Repurchase Plan (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "70", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:TreasuryStockCommonValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-110", "name": "us-gaap:StockRepurchaseProgramAuthorizedAmount1", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfTreasuryStockByClassTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R71": { "role": "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyYearDetails", "longName": "9954514 - Disclosure - Stockholders' Equity - Summary of Stock Repurchase Activity by Year (Details)", "shortName": "Stockholders' Equity - Summary of Stock Repurchase Activity by Year (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "71", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:TreasuryStockSharesAcquired", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfTreasuryStockByClassTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:TreasuryStockAcquiredAverageCostPerShare", "unitRef": "usdPerShare", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfTreasuryStockByClassTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R72": { "role": "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "longName": "9954515 - Disclosure - Stock-Based Compensation - Narrative (Details)", "shortName": "Stock-Based Compensation - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "72", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R73": { "role": "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "longName": "9954516 - Disclosure - Stock-Based Compensation - Stock-Based Compensation Expense (Details)", "shortName": "Stock-Based Compensation - Stock-Based Compensation Expense (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "73", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:AllocatedShareBasedCompensationExpense", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:AllocatedShareBasedCompensationExpense", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R74": { "role": "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails", "longName": "9954517 - Disclosure - Stock-Based Compensation - Stock Option Activity (Details)", "shortName": "Stock-Based Compensation - Stock Option Activity (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "74", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-13", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R75": { "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofAdditionalInformationRelatedtoStockOptionsDetails", "longName": "9954518 - Disclosure - Stock-Based Compensation - Summary of Additional Information Related to Stock Options (Details)", "shortName": "Stock-Based Compensation - Summary of Additional Information Related to Stock Options (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "75", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGrantDateIntrinsicValueTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGrantDateIntrinsicValueTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R76": { "role": "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails", "longName": "9954519 - Disclosure - Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Details)", "shortName": "Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "76", "firstAnchor": { "contextRef": "c-127", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-127", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R77": { "role": "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails", "longName": "9954520 - Disclosure - Stock-Based Compensation - PSU, RSU, RSA, and DSU (Details)", "shortName": "Stock-Based Compensation - PSU, RSU, RSA, and DSU (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "77", "firstAnchor": { "contextRef": "c-152", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-148", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R78": { "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails", "longName": "9954521 - Disclosure - Stock-Based Compensation - Summary of ESPP Activity (Details)", "shortName": "Stock-Based Compensation - Summary of ESPP Activity (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "78", "firstAnchor": { "contextRef": "c-156", "name": "spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-156", "name": "spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R79": { "role": "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "longName": "9954522 - Disclosure - Stock-Based Compensation - Fair Value Estimation of Common Stock, Assumptions (Details)", "shortName": "Stock-Based Compensation - Fair Value Estimation of Common Stock, Assumptions (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "79", "firstAnchor": { "contextRef": "c-156", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-156", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R80": { "role": "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails", "longName": "9954523 - Disclosure - Income Taxes - Schedule of Provision for Income Taxes (Details)", "shortName": "Income Taxes - Schedule of Provision for Income Taxes (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "80", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:CurrentFederalTaxExpenseBenefit", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:CurrentFederalTaxExpenseBenefit", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R81": { "role": "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails", "longName": "9954524 - Disclosure - Income Taxes - Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income (Details)", "shortName": "Income Taxes - Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "81", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R82": { "role": "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails", "longName": "9954525 - Disclosure - Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Details)", "shortName": "Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "82", "firstAnchor": { "contextRef": "c-4", "name": "spsc:DeferredTaxAssetsOperatingLossAndTaxCreditCarryforwards", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "spsc:DeferredTaxAssetsOperatingLossAndTaxCreditCarryforwards", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R83": { "role": "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails", "longName": "9954526 - Disclosure - Income Taxes - Narrative (Details)", "shortName": "Income Taxes - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "83", "firstAnchor": { "contextRef": "c-160", "name": "us-gaap:OperatingLossCarryforwards", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-160", "name": "us-gaap:OperatingLossCarryforwards", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R84": { "role": "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails", "longName": "9954527 - Disclosure - Other Income and Expense - Summary of Other Income (Expense), Net (Details)", "shortName": "Other Income and Expense - Summary of Other Income (Expense), Net (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "84", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:InvestmentIncomeNet", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:InvestmentIncomeNet", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R85": { "role": "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails", "longName": "9954528 - Disclosure - Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Details)", "shortName": "Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "85", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:NetIncomeLoss", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "ix:continuation", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "unique": true } }, "R86": { "role": "http://www.spscommerce.com/role/NetIncomePerShareScheduleofAntidilutiveCommonSharesExcludedfromCalculationofDilutedNetIncomePerShareDetails", "longName": "9954529 - Disclosure - Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details)", "shortName": "Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "86", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R87": { "role": "http://www.spscommerce.com/role/RetirementContributionsNarrativeDetails", "longName": "9954530 - Disclosure - Retirement Contributions - Narrative (Details)", "shortName": "Retirement Contributions - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "87", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R88": { "role": "http://www.spscommerce.com/role/RetirementContributionsScheduleofTotalContributiontothePlanDetails", "longName": "9954531 - Disclosure - Retirement Contributions - Schedule of Total Contribution to the Plan (Details)", "shortName": "Retirement Contributions - Schedule of Total Contribution to the Plan (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "88", "firstAnchor": { "contextRef": "c-1", "name": "spsc:DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:DefinedContributionPlanDisclosuresTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "spsc:DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:DefinedContributionPlanDisclosuresTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R89": { "role": "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "longName": "9954532 - Disclosure - Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes (Details)", "shortName": "Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "89", "firstAnchor": { "contextRef": "c-164", "name": "us-gaap:ConcentrationRiskPercentage1", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-164", "name": "us-gaap:ConcentrationRiskPercentage1", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R90": { "role": "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails", "longName": "9954533 - Disclosure - Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States (Details)", "shortName": "Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "90", "firstAnchor": { "contextRef": "c-170", "name": "us-gaap:ConcentrationRiskPercentage1", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "td", "tr", "table", "div", "spsc:ScheduleOfPercentageOfPropertyAndEquipmentNetTableTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-170", "name": "us-gaap:ConcentrationRiskPercentage1", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "2", "ancestors": [ "span", "td", "tr", "table", "div", "spsc:ScheduleOfPercentageOfPropertyAndEquipmentNetTableTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } }, "R91": { "role": "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails", "longName": "9954534 - Disclosure - Related Party Transactions - Summary of Contributions to Foundation (Details)", "shortName": "Related Party Transactions - Summary of Contributions to Foundation (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "91", "firstAnchor": { "contextRef": "c-172", "name": "us-gaap:RelatedPartyTransactionAmountsOfTransaction", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-172", "name": "us-gaap:RelatedPartyTransactionAmountsOfTransaction", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "spsc-20231231.htm", "first": true, "unique": true } } }, "tag": { "spsc_A2021StockRepurchaseProgramMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "A2021StockRepurchaseProgramMember", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2021 Program", "label": "2021 Stock Repurchase Program [Member]", "documentation": "2021 Stock Repurchase Program" } } }, "auth_ref": [] }, "spsc_A2022StockRepurchaseProgramMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "A2022StockRepurchaseProgramMember", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2022 Program", "label": "2022 Stock Repurchase Program [Member]", "documentation": "2022 Stock Repurchase Program" } } }, "auth_ref": [] }, "us-gaap_AccountsPayableCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccountsPayableCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts payable", "label": "Accounts Payable, Current", "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r30", "r726" ] }, "us-gaap_AccountsReceivableGrossCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccountsReceivableGrossCurrent", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AccountsReceivableNetCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts receivable", "label": "Accounts Receivable, before Allowance for Credit Loss, Current", "documentation": "Amount, before allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current." } } }, "auth_ref": [ "r197", "r286", "r287", "r699" ] }, "us-gaap_AccountsReceivableNetCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccountsReceivableNetCurrent", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Accounts receivable, net", "label": "Accounts Receivable, after Allowance for Credit Loss, Current", "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current." } } }, "auth_ref": [ "r286", "r287" ] }, "us-gaap_AccruedLiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccruedLiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued expenses", "label": "Accrued Liabilities, Current", "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r32" ] }, "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails": { "parentTag": "us-gaap_PropertyPlantAndEquipmentNet", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Less: accumulated depreciation and amortization", "label": "Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment", "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services." } } }, "auth_ref": [ "r62", "r192", "r587" ] }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated other comprehensive gain (loss)", "label": "Accumulated Other Comprehensive Income (Loss), Net of Tax", "documentation": "Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source." } } }, "auth_ref": [ "r38", "r39", "r104", "r198", "r583", "r607", "r608" ] }, "us-gaap_AccumulatedOtherComprehensiveIncomeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AccumulatedOtherComprehensiveIncomeMember", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated Other Comprehensive Gain (Loss)", "label": "AOCI Attributable to Parent [Member]", "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners." } } }, "auth_ref": [ "r6", "r22", "r39", "r494", "r497", "r528", "r603", "r604", "r833", "r834", "r835", "r840", "r841", "r842" ] }, "ecd_Additional402vDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "Additional402vDisclosureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Additional 402(v) Disclosure", "label": "Additional 402(v) Disclosure [Text Block]" } } }, "auth_ref": [ "r779" ] }, "us-gaap_AdditionalPaidInCapitalCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdditionalPaidInCapitalCommonStock", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Additional paid-in capital", "label": "Additional Paid in Capital, Common Stock", "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital." } } }, "auth_ref": [ "r99" ] }, "us-gaap_AdditionalPaidInCapitalMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdditionalPaidInCapitalMember", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Additional Paid-in Capital", "label": "Additional Paid-in Capital [Member]", "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders." } } }, "auth_ref": [ "r449", "r450", "r451", "r622", "r840", "r841", "r842", "r883", "r901" ] }, "ecd_AdjToCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment to Compensation, Amount", "label": "Adjustment to Compensation Amount" } } }, "auth_ref": [ "r785" ] }, "ecd_AdjToCompAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToCompAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment to Compensation:", "label": "Adjustment to Compensation [Axis]" } } }, "auth_ref": [ "r785" ] }, "ecd_AdjToNonPeoNeoCompFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToNonPeoNeoCompFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment to Non-PEO NEO Compensation Footnote", "label": "Adjustment to Non-PEO NEO Compensation Footnote [Text Block]" } } }, "auth_ref": [ "r785" ] }, "ecd_AdjToPeoCompFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AdjToPeoCompFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment To PEO Compensation, Footnote", "label": "Adjustment To PEO Compensation, Footnote [Text Block]" } } }, "auth_ref": [ "r785" ] }, "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation", "label": "APIC, Share-Based Payment Arrangement, Increase for Cost Recognition", "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement." } } }, "auth_ref": [ "r73", "r74", "r411" ] }, "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Reconciliation of net income to net cash provided by operating activities", "label": "Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract]" } } }, "auth_ref": [] }, "ecd_AggtErrCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AggtErrCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Erroneous Compensation Amount", "label": "Aggregate Erroneous Compensation Amount" } } }, "auth_ref": [ "r749", "r761", "r771", "r797" ] }, "ecd_AggtErrCompNotYetDeterminedTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AggtErrCompNotYetDeterminedTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Erroneous Compensation Not Yet Determined", "label": "Aggregate Erroneous Compensation Not Yet Determined [Text Block]" } } }, "auth_ref": [ "r752", "r764", "r774", "r800" ] }, "ecd_AllAdjToCompMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllAdjToCompMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "All Adjustments to Compensation", "label": "All Adjustments to Compensation [Member]" } } }, "auth_ref": [ "r785" ] }, "ecd_AllExecutiveCategoriesMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllExecutiveCategoriesMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "All Executive Categories", "label": "All Executive Categories [Member]" } } }, "auth_ref": [ "r792" ] }, "ecd_AllIndividualsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllIndividualsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure", "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure", "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "All Individuals", "label": "All Individuals [Member]" } } }, "auth_ref": [ "r756", "r765", "r775", "r792", "r801", "r805", "r813" ] }, "ecd_AllTradingArrangementsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AllTradingArrangementsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "All Trading Arrangements", "label": "All Trading Arrangements [Member]" } } }, "auth_ref": [ "r811" ] }, "us-gaap_AllocatedShareBasedCompensationExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllocatedShareBasedCompensationExpense", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation expense", "label": "Share-Based Payment Arrangement, Expense", "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized." } } }, "auth_ref": [ "r444", "r456" ] }, "us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLossesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Allowance for Credit Losses Activity Included in Accounts Receivable Net", "label": "Financing Receivable, Allowance for Credit Loss [Table Text Block]", "documentation": "Tabular disclosure of allowance for credit loss on financing receivable." } } }, "auth_ref": [ "r57", "r854" ] }, "us-gaap_AllowanceForCreditLossesTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForCreditLossesTextBlock", "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLosses" ], "lang": { "en-us": { "role": { "terseLabel": "Allowance for Credit Losses", "label": "Allowance for Credit Losses [Text Block]", "documentation": "The entire disclosure for allowance for credit losses." } } }, "auth_ref": [ "r56" ] }, "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForDoubtfulAccountsReceivableCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AccountsReceivableNetCurrent", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails", "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "negatedLabel": "Allowance for credit losses", "periodStartLabel": "Balance, beginning of year", "periodEndLabel": "Balance, end of year", "label": "Accounts Receivable, Allowance for Credit Loss, Current", "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current." } } }, "auth_ref": [ "r199", "r290", "r326" ] }, "us-gaap_AllowanceForDoubtfulAccountsReceivablePeriodIncreaseDecrease": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForDoubtfulAccountsReceivablePeriodIncreaseDecrease", "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Initial allowance for business combination acquired receivables", "label": "Accounts Receivable, Allowance for Credit Loss, Period Increase (Decrease)", "documentation": "Amount of increase (decrease) in allowance for credit loss on accounts receivable." } } }, "auth_ref": [ "r854" ] }, "us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForDoubtfulAccountsReceivableRollforward", "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts Receivable, Allowance for Credit Loss [Roll Forward]", "label": "Accounts Receivable, Allowance for Credit Loss [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AllowanceForDoubtfulAccountsReceivableWriteOffs", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Write-offs, net of recoveries", "label": "Accounts Receivable, Allowance for Credit Loss, Writeoff", "documentation": "Amount of direct write-downs of accounts receivable charged against the allowance." } } }, "auth_ref": [ "r330" ] }, "dei_AmendmentFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "AmendmentFlag", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Amendment Flag", "label": "Amendment Flag", "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission." } } }, "auth_ref": [] }, "us-gaap_AmortizationOfIntangibleAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AmortizationOfIntangibleAssets", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 4.0 }, "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows", "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofAmortizationExpenseofIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Amortization of intangible assets", "label": "Amortization of Intangible Assets", "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method." } } }, "auth_ref": [ "r14", "r58", "r61" ] }, "spsc_AnalyticsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "AnalyticsMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Analytics", "label": "Analytics [Member]", "documentation": "Analytics." } } }, "auth_ref": [] }, "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareScheduleofAntidilutiveCommonSharesExcludedfromCalculationofDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "verboseLabel": "Anti-dilutive shares (in shares)", "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount", "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented." } } }, "auth_ref": [ "r259" ] }, "us-gaap_ArrangementsAndNonarrangementTransactionsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ArrangementsAndNonarrangementTransactionsMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative", "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Domain]", "documentation": "Collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations." } } }, "auth_ref": [ "r488" ] }, "us-gaap_Assets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Assets", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total assets", "label": "Assets", "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events." } } }, "auth_ref": [ "r146", "r196", "r225", "r264", "r277", "r281", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r489", "r491", "r504", "r578", "r646", "r726", "r738", "r870", "r871", "r890" ] }, "us-gaap_AssetsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "ASSETS", "label": "Assets [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AssetsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsCurrent", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total current assets", "label": "Assets, Current", "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events." } } }, "auth_ref": [ "r188", "r201", "r225", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r489", "r491", "r504", "r726", "r870", "r871", "r890" ] }, "us-gaap_AssetsCurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AssetsCurrentAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Current assets", "label": "Assets, Current [Abstract]" } } }, "auth_ref": [] }, "spsc_AuditInformationAbstract": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "AuditInformationAbstract", "lang": { "en-us": { "role": { "label": "Audit Information [Abstract]", "documentation": "Audit Information" } } }, "auth_ref": [] }, "dei_AuditorFirmId": { "xbrltype": "nonemptySequenceNumberItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "AuditorFirmId", "presentation": [ "http://www.spscommerce.com/role/AuditInformation" ], "lang": { "en-us": { "role": { "terseLabel": "Auditor Firm ID", "label": "Auditor Firm ID", "documentation": "PCAOB issued Audit Firm Identifier" } } }, "auth_ref": [ "r743", "r744", "r757" ] }, "dei_AuditorLocation": { "xbrltype": "internationalNameItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "AuditorLocation", "presentation": [ "http://www.spscommerce.com/role/AuditInformation" ], "lang": { "en-us": { "role": { "terseLabel": "Auditor Location", "label": "Auditor Location" } } }, "auth_ref": [ "r743", "r744", "r757" ] }, "dei_AuditorName": { "xbrltype": "internationalNameItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "AuditorName", "presentation": [ "http://www.spscommerce.com/role/AuditInformation" ], "lang": { "en-us": { "role": { "terseLabel": "Auditor Name", "label": "Auditor Name" } } }, "auth_ref": [ "r743", "r744", "r757" ] }, "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AvailableForSaleDebtSecuritiesAmortizedCostBasis", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/FairValueMeasurementsDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Amortized Cost", "label": "Debt Securities, Available-for-Sale, Amortized Cost", "documentation": "Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r293", "r334", "r577" ] }, "us-gaap_AvailableForSaleSecuritiesDebtSecurities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AvailableForSaleSecuritiesDebtSecurities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/FairValueMeasurementsDetails": { "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value", "label": "Debt Securities, Available-for-Sale", "documentation": "Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r294", "r334", "r571", "r845" ] }, "ecd_AwardExrcPrice": { "xbrltype": "perShareItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardExrcPrice", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Exercise Price", "label": "Award Exercise Price" } } }, "auth_ref": [ "r808" ] }, "ecd_AwardGrantDateFairValue": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardGrantDateFairValue", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value as of Grant Date", "label": "Award Grant Date Fair Value" } } }, "auth_ref": [ "r809" ] }, "ecd_AwardTmgDiscLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgDiscLineItems", "lang": { "en-us": { "role": { "label": "Award Timing Disclosures [Line Items]" } } }, "auth_ref": [ "r804" ] }, "ecd_AwardTmgHowMnpiCnsdrdTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgHowMnpiCnsdrdTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing, How MNPI Considered", "label": "Award Timing, How MNPI Considered [Text Block]" } } }, "auth_ref": [ "r804" ] }, "ecd_AwardTmgMethodTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgMethodTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing Method", "label": "Award Timing Method [Text Block]" } } }, "auth_ref": [ "r804" ] }, "ecd_AwardTmgMnpiCnsdrdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgMnpiCnsdrdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing MNPI Considered", "label": "Award Timing MNPI Considered [Flag]" } } }, "auth_ref": [ "r804" ] }, "ecd_AwardTmgMnpiDiscTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgMnpiDiscTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing MNPI Disclosure", "label": "Award Timing MNPI Disclosure [Text Block]" } } }, "auth_ref": [ "r804" ] }, "ecd_AwardTmgPredtrmndFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardTmgPredtrmndFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing Predetermined", "label": "Award Timing Predetermined [Flag]" } } }, "auth_ref": [ "r804" ] }, "us-gaap_AwardTypeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "AwardTypeAxis", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails", "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Type", "label": "Award Type [Axis]", "documentation": "Information by type of award under share-based payment arrangement." } } }, "auth_ref": [ "r415", "r416", "r417", "r419", "r420", "r421", "r422", "r423", "r424", "r425", "r426", "r427", "r428", "r429", "r430", "r431", "r432", "r433", "r434", "r435", "r436", "r439", "r440", "r441", "r442", "r443" ] }, "ecd_AwardUndrlygSecuritiesAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardUndrlygSecuritiesAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Underlying Securities", "label": "Award Underlying Securities Amount" } } }, "auth_ref": [ "r807" ] }, "ecd_AwardsCloseToMnpiDiscIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardsCloseToMnpiDiscIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Awards Close in Time to MNPI Disclosures, Individual Name" } } }, "auth_ref": [ "r806" ] }, "ecd_AwardsCloseToMnpiDiscTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardsCloseToMnpiDiscTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Awards Close in Time to MNPI Disclosures", "label": "Awards Close in Time to MNPI Disclosures [Table]" } } }, "auth_ref": [ "r805" ] }, "ecd_AwardsCloseToMnpiDiscTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "AwardsCloseToMnpiDiscTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Awards Close in Time to MNPI Disclosures, Table", "label": "Awards Close in Time to MNPI Disclosures [Table Text Block]" } } }, "auth_ref": [ "r805" ] }, "us-gaap_BalanceSheetLocationAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BalanceSheetLocationAxis", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Balance Sheet Location [Axis]", "label": "Balance Sheet Location [Axis]", "documentation": "Information by location on balance sheet (statement of financial position)." } } }, "auth_ref": [] }, "us-gaap_BalanceSheetLocationDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BalanceSheetLocationDomain", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Balance Sheet Location [Domain]", "label": "Balance Sheet Location [Domain]", "documentation": "Location in the balance sheet (statement of financial position)." } } }, "auth_ref": [ "r85", "r86" ] }, "us-gaap_BasisOfAccountingPolicyPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BasisOfAccountingPolicyPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Basis of Presentation", "label": "Basis of Accounting, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for basis of accounting, or basis of presentation, used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS)." } } }, "auth_ref": [] }, "us-gaap_BusinessAcquisitionAcquireeDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessAcquisitionAcquireeDomain", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Business Acquisition, Acquiree", "label": "Business Acquisition, Acquiree [Domain]", "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree." } } }, "auth_ref": [ "r485", "r720", "r721" ] }, "us-gaap_BusinessAcquisitionAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessAcquisitionAxis", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Business Acquisition", "label": "Business Acquisition [Axis]", "documentation": "Information by business combination or series of individually immaterial business combinations." } } }, "auth_ref": [ "r79", "r80", "r485", "r720", "r721" ] }, "us-gaap_BusinessAcquisitionLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessAcquisitionLineItems", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Business Acquisition [Line Items]", "label": "Business Acquisition [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r485" ] }, "us-gaap_BusinessCombinationAndAssetAcquisitionAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationAndAssetAcquisitionAbstract", "lang": { "en-us": { "role": { "label": "Business Combination and Asset Acquisition [Abstract]" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationConsiderationTransferred1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationConsiderationTransferred1", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Total consideration", "label": "Business Combination, Consideration Transferred", "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer." } } }, "auth_ref": [ "r3", "r4", "r19" ] }, "us-gaap_BusinessCombinationDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitions" ], "lang": { "en-us": { "role": { "terseLabel": "Business Acquisitions", "label": "Business Combination Disclosure [Text Block]", "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable)." } } }, "auth_ref": [ "r139", "r486" ] }, "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentAccountsReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentAccountsReceivable", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment, accounts receivable", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Accounts Receivable", "documentation": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Accounts Receivable" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Decrease in provisional amounts for consideration transferred", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Consideration Transferred", "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to items of consideration transferred in connection with a business combination for which the initial accounting was incomplete." } } }, "auth_ref": [ "r83" ] }, "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCurrentLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCurrentLiabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Adjustment, current liabilities", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Current Liabilities", "documentation": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Current Liabilities" } } }, "auth_ref": [] }, "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Adjustment, deferred income tax liabilities, net", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities", "documentation": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities" } } }, "auth_ref": [] }, "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxes": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxes", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Increase (decrease) in estimated value of deferred income tax assets", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Taxes", "documentation": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Taxes" } } }, "auth_ref": [] }, "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Adjustment, total fair value of assets and liabilities acquired", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Fair Value Of Assets And Liabilities", "documentation": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Fair Value Of Assets And Liabilities" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Decrease in estimated value of deferred income tax assets", "terseLabel": "Adjustment, intangible assets", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Intangibles", "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to intangibles acquired in connection with a business combination for which the initial accounting was incomplete." } } }, "auth_ref": [ "r83" ] }, "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentOtherAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentOtherAssets", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "spsc_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentFairValueOfAssetsAndLiabilities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment, other assets", "label": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Other Assets", "documentation": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Other Assets" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Assets acquired", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Assets", "documentation": "Amount of assets acquired at the acquisition date." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cash", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Cash and Equivalents", "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions, acquired at the acquisition date. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts receivable", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Receivables", "documentation": "Amount due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": -1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Current liabilities", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities", "documentation": "Amount of liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": -1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Deferred revenue", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue", "documentation": "Amount of deferred revenue expected to be recognized as such within one year or the normal operating cycle, if longer, assumed at the acquisition date." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Deferred income tax liabilities, net", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Deferred Tax Liabilities", "documentation": "Amount of deferred tax liability attributable to taxable temporary differences assumed at the acquisition date." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Intangible assets", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Intangible Assets, Other than Goodwill", "documentation": "Amount of intangible assets, excluding goodwill, acquired at the acquisition date." } } }, "auth_ref": [ "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Total fair value of assets and liabilities acquired", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Net", "documentation": "Amount recognized as of the acquisition date for the identifiable assets acquired in excess of (less than) the aggregate liabilities assumed." } } }, "auth_ref": [ "r81", "r82" ] }, "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNetAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNetAbstract", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Estimated fair value of assets and liabilities acquired:", "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Net [Abstract]" } } }, "auth_ref": [] }, "spsc_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherAssets", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails": { "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other assets", "label": "Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Other Assets", "documentation": "Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Other Assets" } } }, "auth_ref": [] }, "us-gaap_BusinessCombinationsPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "BusinessCombinationsPolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Business Combinations", "label": "Business Combinations Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy." } } }, "auth_ref": [ "r78" ] }, "spsc_BusinessDescriptionPolicyPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "BusinessDescriptionPolicyPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Business Description", "label": "Business Description Policy [Policy Text Block]", "documentation": "Business description policy." } } }, "auth_ref": [] }, "us-gaap_CashAndCashEquivalentsAtCarryingValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashAndCashEquivalentsAtCarryingValue", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Cash and cash equivalents", "label": "Cash and Cash Equivalents, at Carrying Value", "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation." } } }, "auth_ref": [ "r43", "r190", "r698" ] }, "us-gaap_CashAndCashEquivalentsPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashAndCashEquivalentsPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Cash and Cash Equivalents", "label": "Cash and Cash Equivalents, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value." } } }, "auth_ref": [ "r44" ] }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "periodStartLabel": "Cash and cash equivalents at beginning of period", "periodEndLabel": "Cash and cash equivalents at end of period", "label": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations", "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r43", "r117", "r223" ] }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net increase (decrease) in cash and cash equivalents", "label": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect", "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r5", "r117" ] }, "us-gaap_CashEquivalentsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CashEquivalentsMember", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cash equivalents:", "label": "Cash Equivalents [Member]", "documentation": "Short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r190" ] }, "spsc_CashPaidForAmountsIncludedInMeasurementOfLeaseLiabilitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "CashPaidForAmountsIncludedInMeasurementOfLeaseLiabilitiesAbstract", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cash paid for amounts included in the measurement of lease liabilities", "label": "Cash Paid For Amounts Included In Measurement Of Lease Liabilities [Abstract]", "documentation": "Cash paid for amounts included in the measurement of lease liabilities." } } }, "auth_ref": [] }, "us-gaap_CertificatesOfDepositMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CertificatesOfDepositMember", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Certificates of deposit", "label": "Certificates of Deposit [Member]", "documentation": "Short to medium-term investment available at banks and savings and loan institutions where a customer agrees to lend money to the institution for a certain amount of time and is paid a predetermined rate of interest. Certificates of deposit (CD) are typically Federal Deposit Insurance Corporation (FDIC) insured." } } }, "auth_ref": [ "r18", "r733", "r734", "r735", "r736" ] }, "ecd_ChangedPeerGroupFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ChangedPeerGroupFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Changed Peer Group, Footnote", "label": "Changed Peer Group, Footnote [Text Block]" } } }, "auth_ref": [ "r783" ] }, "dei_CityAreaCode": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CityAreaCode", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "City Area Code", "label": "City Area Code", "documentation": "Area code of city" } } }, "auth_ref": [] }, "ecd_CoSelectedMeasureAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CoSelectedMeasureAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Company Selected Measure Amount", "label": "Company Selected Measure Amount" } } }, "auth_ref": [ "r784" ] }, "ecd_CoSelectedMeasureName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CoSelectedMeasureName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Company Selected Measure Name", "label": "Company Selected Measure Name" } } }, "auth_ref": [ "r784" ] }, "us-gaap_CollaborativeArrangementsAndNoncollaborativeArrangementTransactionsLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CollaborativeArrangementsAndNoncollaborativeArrangementTransactionsLineItems", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative [Line Items]", "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r488" ] }, "us-gaap_CommercialPaperMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommercialPaperMember", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Commercial paper", "label": "Commercial Paper [Member]", "documentation": "Unsecured promissory note (generally negotiable) that provides institutions with short-term funds." } } }, "auth_ref": [ "r129", "r733", "r734", "r735", "r736" ] }, "us-gaap_CommitmentsAndContingencies": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommitmentsAndContingencies", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Commitments and contingencies", "label": "Commitments and Contingencies", "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur." } } }, "auth_ref": [ "r35", "r91", "r580", "r633" ] }, "us-gaap_CommitmentsAndContingenciesDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommitmentsAndContingenciesDisclosureAbstract", "lang": { "en-us": { "role": { "terseLabel": "Commitments and Contingencies Disclosure [Abstract]", "label": "Commitments and Contingencies Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommitmentsAndContingenciesDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingencies" ], "lang": { "en-us": { "role": { "terseLabel": "Commitments and Contingencies", "label": "Commitments and Contingencies Disclosure [Text Block]", "documentation": "The entire disclosure for commitments and contingencies." } } }, "auth_ref": [ "r128", "r349", "r350", "r693", "r867" ] }, "us-gaap_CommonStockMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockMember", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Common Stock", "label": "Common Stock [Member]", "documentation": "Stock that is subordinate to all other stock of the issuer." } } }, "auth_ref": [ "r729", "r730", "r731", "r733", "r734", "r735", "r736", "r840", "r841", "r883", "r900", "r901" ] }, "us-gaap_CommonStockParOrStatedValuePerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockParOrStatedValuePerShare", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, par value (in dollars per share)", "label": "Common Stock, Par or Stated Value Per Share", "documentation": "Face amount or stated value per share of common stock." } } }, "auth_ref": [ "r98" ] }, "us-gaap_CommonStockSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockSharesAuthorized", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, shares authorized (in shares)", "label": "Common Stock, Shares Authorized", "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws." } } }, "auth_ref": [ "r98", "r634" ] }, "us-gaap_CommonStockSharesIssued": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockSharesIssued", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, shares issued (in shares)", "label": "Common Stock, Shares, Issued", "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury." } } }, "auth_ref": [ "r98" ] }, "us-gaap_CommonStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockSharesOutstanding", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, shares outstanding (in shares)", "periodStartLabel": "Beginning balance (in shares)", "periodEndLabel": "Ending balance (in shares)", "label": "Common Stock, Shares, Outstanding", "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation." } } }, "auth_ref": [ "r23", "r98", "r634", "r652", "r901", "r902" ] }, "us-gaap_CommonStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CommonStockValue", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, $0.001 par value; 110,000,000 shares authorized; 38,971,146 and 38,309,144 shares issued; and 36,820,048 and 36,158,046 shares outstanding, respectively", "label": "Common Stock, Value, Issued", "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity." } } }, "auth_ref": [ "r98", "r582", "r726" ] }, "ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsCoSelectedMeasureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Company Selected Measure", "label": "Compensation Actually Paid vs. Company Selected Measure [Text Block]" } } }, "auth_ref": [ "r789" ] }, "ecd_CompActuallyPaidVsNetIncomeTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsNetIncomeTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Net Income", "label": "Compensation Actually Paid vs. Net Income [Text Block]" } } }, "auth_ref": [ "r788" ] }, "ecd_CompActuallyPaidVsOtherMeasureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsOtherMeasureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Other Measure", "label": "Compensation Actually Paid vs. Other Measure [Text Block]" } } }, "auth_ref": [ "r790" ] }, "ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "CompActuallyPaidVsTotalShareholderRtnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Total Shareholder Return", "label": "Compensation Actually Paid vs. Total Shareholder Return [Text Block]" } } }, "auth_ref": [ "r787" ] }, "us-gaap_CompensationAndRetirementDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CompensationAndRetirementDisclosureAbstract", "lang": { "en-us": { "role": { "terseLabel": "Retirement Benefits [Abstract]", "label": "Retirement Benefits [Abstract]" } } }, "auth_ref": [] }, "us-gaap_ComprehensiveIncomeNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ComprehensiveIncomeNetOfTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Comprehensive income", "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent", "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners." } } }, "auth_ref": [ "r40", "r208", "r210", "r215", "r572", "r592" ] }, "spsc_ComputerEquipmentAndSoftwareMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ComputerEquipmentAndSoftwareMember", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Computer equipment", "label": "Computer Equipment And Software [Member]", "documentation": "Computer equipment and software." } } }, "auth_ref": [] }, "us-gaap_ComputerEquipmentMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ComputerEquipmentMember", "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Computer equipment", "label": "Computer Equipment [Member]", "documentation": "Long lived, depreciable assets that are used in the creation, maintenance and utilization of information systems." } } }, "auth_ref": [] }, "us-gaap_ConcentrationRiskBenchmarkDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ConcentrationRiskBenchmarkDomain", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Concentration Risk Benchmark", "label": "Concentration Risk Benchmark [Domain]", "documentation": "The denominator in a calculation of a disclosed concentration risk percentage." } } }, "auth_ref": [ "r49", "r51", "r87", "r88", "r285", "r692" ] }, "us-gaap_ConcentrationRiskByBenchmarkAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ConcentrationRiskByBenchmarkAxis", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Concentration Risk Benchmark", "label": "Concentration Risk Benchmark [Axis]", "documentation": "Information by benchmark of concentration risk." } } }, "auth_ref": [ "r49", "r51", "r87", "r88", "r285", "r609", "r692" ] }, "us-gaap_ConcentrationRiskByTypeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ConcentrationRiskByTypeAxis", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Concentration Risk Type", "label": "Concentration Risk Type [Axis]", "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender." } } }, "auth_ref": [ "r49", "r51", "r87", "r88", "r285", "r692", "r821" ] }, "us-gaap_ConcentrationRiskCreditRisk": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ConcentrationRiskCreditRisk", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Concentration of Credit Risk", "label": "Concentration Risk, Credit Risk, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for credit risk." } } }, "auth_ref": [ "r92", "r159" ] }, "us-gaap_ConcentrationRiskPercentage1": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ConcentrationRiskPercentage1", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Concentration risk, percentage", "label": "Concentration Risk, Percentage", "documentation": "For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the \"benchmark\" (or denominator) in the equation, this concept represents the concentration percentage derived from the division." } } }, "auth_ref": [ "r49", "r51", "r87", "r88", "r285" ] }, "us-gaap_ConcentrationRiskTypeDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ConcentrationRiskTypeDomain", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Concentration Risk Type", "label": "Concentration Risk Type [Domain]", "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration." } } }, "auth_ref": [ "r49", "r51", "r87", "r88", "r285", "r692" ] }, "spsc_ContractTermMaximum": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ContractTermMaximum", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Contract term maximum", "label": "Contract Term Maximum", "documentation": "Contract Term Maximum" } } }, "auth_ref": [] }, "us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerAssetAndLiabilityTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/RevenueTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Deferred Revenue Liability Relating to Set-Up Fees", "label": "Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]", "documentation": "Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability." } } }, "auth_ref": [ "r873" ] }, "us-gaap_ContractWithCustomerDurationAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerDurationAxis", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Contract with Customer, Duration", "label": "Contract with Customer, Duration [Axis]", "documentation": "Information by duration of contract with customer. Includes, but is not limited to, short-term and long-term contracts." } } }, "auth_ref": [ "r716", "r874" ] }, "us-gaap_ContractWithCustomerDurationDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerDurationDomain", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Contract with Customer, Duration", "label": "Contract with Customer, Duration [Domain]", "documentation": "Duration of contract with customer. Includes, but is not limited to, short-term and long-term contracts." } } }, "auth_ref": [ "r716", "r874" ] }, "us-gaap_ContractWithCustomerLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerLiability", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Balance, beginning of year", "periodEndLabel": "Balance, end of year", "label": "Contract with Customer, Liability", "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable." } } }, "auth_ref": [ "r380", "r381", "r392" ] }, "us-gaap_ContractWithCustomerLiabilityCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerLiabilityCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred revenue", "label": "Contract with Customer, Liability, Current", "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current." } } }, "auth_ref": [ "r380", "r381", "r392" ] }, "us-gaap_ContractWithCustomerLiabilityNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerLiabilityNoncurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred revenue, non-current", "label": "Contract with Customer, Liability, Noncurrent", "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as noncurrent." } } }, "auth_ref": [ "r380", "r381", "r392" ] }, "us-gaap_ContractWithCustomerLiabilityRevenueRecognized": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ContractWithCustomerLiabilityRevenueRecognized", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred revenue", "label": "Contract with Customer, Liability, Revenue Recognized", "documentation": "Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due." } } }, "auth_ref": [ "r393" ] }, "srt_ContractualObligationFiscalYearMaturityScheduleTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ContractualObligationFiscalYearMaturityScheduleTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Remaining Purchase Commitments and Estimated Purchase Timing", "label": "Contractual Obligation, Fiscal Year Maturity [Table Text Block]", "documentation": "Tabular disclosure of contractual obligation by timing of payment due. Includes, but is not limited to, long-term debt obligation, lease obligation, and purchase obligation." } } }, "auth_ref": [ "r839" ] }, "spsc_ContributionsToFoundationMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ContributionsToFoundationMember", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Contributions to Foundation", "label": "Contributions To Foundation [Member]", "documentation": "Contributions To Foundation" } } }, "auth_ref": [] }, "us-gaap_CostOfRevenue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CostOfRevenue", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_GrossProfit", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Cost of revenues", "label": "Cost of Revenue", "documentation": "The aggregate cost of goods produced and sold and services rendered during the reporting period." } } }, "auth_ref": [ "r109", "r225", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r504", "r870" ] }, "us-gaap_CostOfSalesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CostOfSalesMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cost of revenues", "label": "Cost of Sales [Member]", "documentation": "Primary financial statement caption encompassing cost of sales." } } }, "auth_ref": [] }, "dei_CoverAbstract": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CoverAbstract", "lang": { "en-us": { "role": { "terseLabel": "Cover [Abstract]", "label": "Cover [Abstract]", "documentation": "Cover page." } } }, "auth_ref": [] }, "us-gaap_CurrentFederalTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CurrentFederalTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": "us-gaap_IncomeTaxExpenseBenefit", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Federal", "label": "Current Federal Tax Expense (Benefit)", "documentation": "Amount of current federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current national tax expense (benefit) for non-US (United States of America) jurisdiction." } } }, "auth_ref": [ "r823", "r838", "r881" ] }, "dei_CurrentFiscalYearEndDate": { "xbrltype": "gMonthDayItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CurrentFiscalYearEndDate", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Current Fiscal Year End Date", "label": "Current Fiscal Year End Date", "documentation": "End date of current fiscal year in the format --MM-DD." } } }, "auth_ref": [] }, "us-gaap_CurrentForeignTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CurrentForeignTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": "us-gaap_IncomeTaxExpenseBenefit", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign", "label": "Current Foreign Tax Expense (Benefit)", "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations." } } }, "auth_ref": [ "r823", "r838" ] }, "us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Current", "label": "Current Income Tax Expense (Benefit), Continuing Operations [Abstract]" } } }, "auth_ref": [] }, "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CurrentStateAndLocalTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": "us-gaap_IncomeTaxExpenseBenefit", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "State", "label": "Current State and Local Tax Expense (Benefit)", "documentation": "Amount of current state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction." } } }, "auth_ref": [ "r823", "r838", "r881" ] }, "spsc_CustomerContractCancellationPeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "CustomerContractCancellationPeriod", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Customer contract cancellation period", "label": "Customer Contract Cancellation Period", "documentation": "Customer contract cancellation period." } } }, "auth_ref": [] }, "us-gaap_CustomerRelationshipsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "CustomerRelationshipsMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Subscriber relationships", "label": "Customer Relationships [Member]", "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships." } } }, "auth_ref": [ "r84" ] }, "us-gaap_DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/FairValueMeasurementsDetails": { "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Unrealized Gains (Losses), net", "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain (Loss), before Tax", "documentation": "Amount, before tax, of unrealized gain (loss) in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r847", "r848" ] }, "us-gaap_DebtSecuritiesAvailableForSaleTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DebtSecuritiesAvailableForSaleTable", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Financial Instruments [Table]", "label": "Debt Securities, Available-for-Sale [Table]", "documentation": "Disclosure of information about investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r292", "r293", "r294", "r295", "r296", "r297", "r298", "r299", "r300", "r301", "r302", "r303" ] }, "us-gaap_DeferredChargesPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredChargesPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred Costs", "label": "Deferred Charges, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for deferral and amortization of significant deferred charges." } } }, "auth_ref": [ "r195" ] }, "spsc_DeferredCommissionExpectedAmortizationPeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredCommissionExpectedAmortizationPeriod", "presentation": [ "http://www.spscommerce.com/role/GeneralNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred commission expected amortization period", "label": "Deferred Commission Expected Amortization Period", "documentation": "Deferred commission expected amortization period." } } }, "auth_ref": [] }, "us-gaap_DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock reserved for future issuance (in shares)", "label": "Deferred Compensation Arrangement with Individual, Common Stock Reserved for Future Issuance", "documentation": "Number of common shares reserved for future issuance related to deferred compensation arrangements with individuals." } } }, "auth_ref": [] }, "us-gaap_DeferredCosts": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredCosts", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred costs, non-current", "label": "Deferred Costs, Noncurrent", "documentation": "Amount of deferred cost, excluding capitalized cost related to contract with customer; classified as noncurrent." } } }, "auth_ref": [ "r145", "r831" ] }, "us-gaap_DeferredCostsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredCostsAbstract", "lang": { "en-us": { "role": { "terseLabel": "Deferred Costs [Abstract]", "label": "Deferred Costs [Abstract]" } } }, "auth_ref": [] }, "spsc_DeferredCostsAmortized": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredCostsAmortized", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/DeferredCostsSummaryofDeferredCostsActivityDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Amortized deferred costs", "label": "Deferred Costs Amortized", "documentation": "Deferred costs amortized." } } }, "auth_ref": [] }, "spsc_DeferredCostsAndAmortizationTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredCostsAndAmortizationTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/DeferredCostsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Deferred Costs Activity", "label": "Deferred Costs And Amortization [Table Text Block]", "documentation": "Deferred costs and amortization." } } }, "auth_ref": [] }, "us-gaap_DeferredCostsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredCostsCurrent", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred costs", "label": "Deferred Costs, Current", "documentation": "Sum of the carrying amounts as of the balance sheet date of deferred costs capitalized at the end of the reporting period that are expected to be charged against earnings within one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r832" ] }, "us-gaap_DeferredCostsCurrentAndNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredCostsCurrentAndNoncurrent", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/DeferredCostsSummaryofDeferredCostsActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Balance, beginning of year", "periodEndLabel": "Balance, end of year", "label": "Deferred Costs", "documentation": "The carrying amount of deferred costs." } } }, "auth_ref": [] }, "spsc_DeferredCostsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredCostsDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/DeferredCosts" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred Costs", "label": "Deferred Costs Disclosure [Text Block]", "documentation": "Deferred costs." } } }, "auth_ref": [] }, "spsc_DeferredCostsIncurred": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredCostsIncurred", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/DeferredCostsSummaryofDeferredCostsActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Incurred deferred costs", "label": "Deferred Costs Incurred", "documentation": "Deferred costs incurred." } } }, "auth_ref": [] }, "spsc_DeferredCostsRollForward": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredCostsRollForward", "presentation": [ "http://www.spscommerce.com/role/DeferredCostsSummaryofDeferredCostsActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred Costs [Roll Forward]", "label": "Deferred Costs [Roll Forward]", "documentation": "Deferred Costs" } } }, "auth_ref": [] }, "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredFederalIncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": "us-gaap_IncomeTaxExpenseBenefit", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Federal", "label": "Deferred Federal Income Tax Expense (Benefit)", "documentation": "Amount of deferred federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred national tax expense (benefit) for non-US (United States of America) jurisdiction." } } }, "auth_ref": [ "r838", "r880", "r881" ] }, "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredForeignIncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": "us-gaap_IncomeTaxExpenseBenefit", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign", "label": "Deferred Foreign Income Tax Expense (Benefit)", "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations." } } }, "auth_ref": [ "r138", "r838", "r880" ] }, "us-gaap_DeferredIncomeTaxAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxAssetsNet", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred income tax assets", "label": "Deferred Income Tax Assets, Net", "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting." } } }, "auth_ref": [ "r462", "r463" ] }, "us-gaap_DeferredIncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred income taxes", "label": "Deferred Income Tax Expense (Benefit)", "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations." } } }, "auth_ref": [ "r14", "r138", "r165", "r479", "r480", "r838" ] }, "us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred", "label": "Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract]" } } }, "auth_ref": [] }, "us-gaap_DeferredIncomeTaxLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxLiabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxLiabilities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedTotalLabel": "Total deferred income tax liabilities", "label": "Deferred Tax Liabilities, Gross", "documentation": "Amount of deferred tax liability attributable to taxable temporary differences." } } }, "auth_ref": [ "r95", "r96", "r147", "r469" ] }, "us-gaap_DeferredIncomeTaxLiabilitiesNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredIncomeTaxLiabilitiesNet", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred income tax liabilities", "label": "Deferred Income Tax Liabilities, Net", "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting." } } }, "auth_ref": [ "r462", "r463", "r579" ] }, "spsc_DeferredRevenueAmortizedSetUpFees": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredRevenueAmortizedSetUpFees", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Recognized set-up fees", "label": "Deferred Revenue Amortized Set Up Fees", "documentation": "Deferred revenue amortized set up fees." } } }, "auth_ref": [] }, "spsc_DeferredRevenueArrangementRollForward": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredRevenueArrangementRollForward", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred Revenue Arrangement [Roll Forward]", "label": "Deferred Revenue Arrangement [Roll Forward]", "documentation": "Deferred Revenue Arrangement" } } }, "auth_ref": [] }, "spsc_DeferredRevenueInvoicedSetUpFees": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredRevenueInvoicedSetUpFees", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Invoiced set-up fees", "label": "Deferred Revenue Invoiced Set Up Fees", "documentation": "Deferred revenue Invoiced set up fees." } } }, "auth_ref": [] }, "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": "us-gaap_IncomeTaxExpenseBenefit", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "State", "label": "Deferred State and Local Income Tax Expense (Benefit)", "documentation": "Amount of deferred state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction." } } }, "auth_ref": [ "r838", "r880", "r881" ] }, "spsc_DeferredStockUnitsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredStockUnitsMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "DSUs", "label": "Deferred Stock Units [Member]", "documentation": "Deferred Stock Units" } } }, "auth_ref": [] }, "us-gaap_DeferredTaxAssetsGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsGross", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Gross deferred income tax assets", "label": "Deferred Tax Assets, Gross", "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards." } } }, "auth_ref": [ "r470" ] }, "us-gaap_DeferredTaxAssetsInProcessResearchAndDevelopment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsInProcessResearchAndDevelopment", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsGross", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Research and development capitalized", "label": "Deferred Tax Assets, in Process Research and Development", "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from in-process research and development costs expensed in connection with a business combination." } } }, "auth_ref": [ "r77", "r879" ] }, "us-gaap_DeferredTaxAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsNet", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxLiabilities", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Total net deferred income tax assets", "label": "Deferred Tax Assets, Net of Valuation Allowance", "documentation": "Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards." } } }, "auth_ref": [ "r878" ] }, "us-gaap_DeferredTaxAssetsNetAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsNetAbstract", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred income tax assets", "label": "Deferred Tax Assets, Net [Abstract]" } } }, "auth_ref": [] }, "spsc_DeferredTaxAssetsOperatingLeaseLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredTaxAssetsOperatingLeaseLiabilities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsGross", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Operating lease liabilities", "label": "Deferred Tax Assets Operating Lease Liabilities", "documentation": "Deferred tax assets operating lease liabilities." } } }, "auth_ref": [] }, "spsc_DeferredTaxAssetsOperatingLossAndTaxCreditCarryforwards": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredTaxAssetsOperatingLossAndTaxCreditCarryforwards", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsGross", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Net operating loss and credit carryforwards", "label": "Deferred Tax Assets Operating Loss And Tax Credit Carryforwards", "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards and deductible tax credit carryforwards including, but not limited to, research, foreign, general business, alternative minimum tax, and other deductible tax credit carryforwards." } } }, "auth_ref": [] }, "us-gaap_DeferredTaxAssetsOther": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsOther", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsGross", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other deferred income tax assets", "label": "Deferred Tax Assets, Other", "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other." } } }, "auth_ref": [ "r77", "r879" ] }, "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsGross", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation expense", "label": "Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-Based Compensation Cost", "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation." } } }, "auth_ref": [ "r77", "r879" ] }, "us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsGross", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued expenses", "label": "Deferred Tax Assets, Tax Deferred Expense, Reserves and Accruals, Accrued Liabilities", "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities." } } }, "auth_ref": [ "r77", "r879" ] }, "us-gaap_DeferredTaxAssetsValuationAllowance": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxAssetsValuationAllowance", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredTaxAssetsNet", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Less: valuation allowance", "label": "Deferred Tax Assets, Valuation Allowance", "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized." } } }, "auth_ref": [ "r471" ] }, "us-gaap_DeferredTaxLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxLiabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedTotalLabel": "Net deferred income tax liabilities", "label": "Deferred Tax Liabilities, Net", "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting." } } }, "auth_ref": [ "r75", "r878" ] }, "spsc_DeferredTaxLiabilitiesDeferredRevenueAndExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredTaxLiabilitiesDeferredRevenueAndExpense", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredIncomeTaxLiabilities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Deferred costs", "label": "Deferred Tax Liabilities Deferred Revenue And Expense", "documentation": "Deferred tax liabilities deferred revenue and expense." } } }, "auth_ref": [] }, "us-gaap_DeferredTaxLiabilitiesNetAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxLiabilitiesNetAbstract", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred income tax liabilities", "label": "Deferred Tax Liabilities, Net [Abstract]" } } }, "auth_ref": [] }, "us-gaap_DeferredTaxLiabilitiesOther": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DeferredTaxLiabilitiesOther", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredIncomeTaxLiabilities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Other deferred income tax liabilities", "label": "Deferred Tax Liabilities, Other", "documentation": "Amount of deferred tax liability attributable to taxable temporary differences classified as other." } } }, "auth_ref": [ "r77", "r879" ] }, "spsc_DeferredTaxLiabilitiesPropertyPlantAndEquipmentAndOtherFiniteLivedAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredTaxLiabilitiesPropertyPlantAndEquipmentAndOtherFiniteLivedAssets", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredIncomeTaxLiabilities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Depreciation and amortization", "label": "Deferred Tax Liabilities Property Plant And Equipment And Other Finite Lived Assets", "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment and long-lived assets." } } }, "auth_ref": [] }, "spsc_DeferredTaxLiabilitiesRightOfUseAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DeferredTaxLiabilitiesRightOfUseAssets", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails": { "parentTag": "us-gaap_DeferredIncomeTaxLiabilities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesSignificantComponentsofDeferredTaxAssetsLiabilitiesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Right-of-use assets", "label": "Deferred Tax Liabilities Right Of Use Assets", "documentation": "Deferred tax liabilities right of use assets." } } }, "auth_ref": [] }, "us-gaap_DefinedContributionPlanDisclosuresTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DefinedContributionPlanDisclosuresTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/RetirementContributionsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Total Contribution to the Plan", "label": "Defined Contribution Plan Disclosures [Table Text Block]", "documentation": "Tabular disclosure of defined contribution pension plans or defined contribution other postretirement plans, separately for pension plans and other postretirement benefit plans." } } }, "auth_ref": [ "r67" ] }, "us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DefinedContributionPlanEmployerMatchingContributionPercent", "presentation": [ "http://www.spscommerce.com/role/RetirementContributionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Maximum annual contribution per employee, percent", "label": "Defined Contribution Plan, Employer Matching Contribution, Percent of Employees' Gross Pay", "documentation": "Percentage of employees' gross pay for which the employer contributes a matching contribution to a defined contribution plan." } } }, "auth_ref": [] }, "us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DefinedContributionPlanEmployerMatchingContributionPercentOfMatch", "presentation": [ "http://www.spscommerce.com/role/RetirementContributionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Defined benefit plan employer matching contribution percent", "label": "Defined Contribution Plan, Employer Matching Contribution, Percent of Match", "documentation": "Percentage employer matches of the employee's percentage contribution matched." } } }, "auth_ref": [] }, "spsc_DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/RetirementContributionsScheduleofTotalContributiontothePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Retirement contributions", "label": "Defined Contribution Plan Employer Not Note Discretionary Contribution Amount", "documentation": "Defined contribution plan employer not note discretionary contribution amount." } } }, "auth_ref": [] }, "us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent", "presentation": [ "http://www.spscommerce.com/role/RetirementContributionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Maximum allowable contribution by employee percentage", "label": "Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent", "documentation": "Maximum percentage of employee gross pay the employee may contribute to a defined contribution plan." } } }, "auth_ref": [] }, "spsc_DepreciationAndAmortizationExpenseOfPropertyAndEquipmentTableTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "DepreciationAndAmortizationExpenseOfPropertyAndEquipmentTableTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Depreciation and Amortization Expense of Property and Equipment", "label": "Depreciation And Amortization Expense Of Property And Equipment Table [Table Text Block]", "documentation": "Depreciation and amortization expense of property and equipment." } } }, "auth_ref": [] }, "us-gaap_DepreciationDepletionAndAmortization": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DepreciationDepletionAndAmortization", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows", "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofDepreciationandAmortizationExpenseofPropertyandEquipmentDetails" ], "lang": { "en-us": { "role": { "verboseLabel": "Depreciation and amortization of property and equipment", "terseLabel": "Depreciation and amortization expense", "label": "Depreciation, Depletion and Amortization", "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets." } } }, "auth_ref": [ "r14", "r267" ] }, "us-gaap_DevelopedTechnologyRightsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DevelopedTechnologyRightsMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Developed technology", "label": "Developed Technology Rights [Member]", "documentation": "Rights to developed technology, which can include the right to develop, use, market, sell, or offer for sale products, compounds, or intellectual property." } } }, "auth_ref": [ "r141" ] }, "us-gaap_DisaggregationOfRevenueLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisaggregationOfRevenueLineItems", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Disaggregation Of Revenue [Line Items]", "label": "Disaggregation of Revenue [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r391", "r712", "r713", "r714", "r715", "r716", "r717", "r718" ] }, "us-gaap_DisaggregationOfRevenueTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisaggregationOfRevenueTable", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Disaggregation Of Revenue [Table]", "label": "Disaggregation of Revenue [Table]", "documentation": "Disclosure of information about disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor." } } }, "auth_ref": [ "r391", "r712", "r713", "r714", "r715", "r716", "r717", "r718" ] }, "us-gaap_DisaggregationOfRevenueTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisaggregationOfRevenueTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/RevenueTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Revenues by Revenue Stream", "label": "Disaggregation of Revenue [Table Text Block]", "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor." } } }, "auth_ref": [ "r874" ] }, "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensation" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-Based Compensation", "label": "Share-Based Payment Arrangement [Text Block]", "documentation": "The entire disclosure for share-based payment arrangement." } } }, "auth_ref": [ "r409", "r414", "r445", "r446", "r448", "r723" ] }, "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract", "lang": { "en-us": { "role": { "terseLabel": "Share-based Payment Arrangement [Abstract]", "label": "Share-Based Payment Arrangement [Abstract]" } } }, "auth_ref": [] }, "dei_DocumentAnnualReport": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentAnnualReport", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Annual Report", "label": "Document Annual Report", "documentation": "Boolean flag that is true only for a form used as an annual report." } } }, "auth_ref": [ "r743", "r744", "r757" ] }, "dei_DocumentFinStmtErrorCorrectionFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentFinStmtErrorCorrectionFlag", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Financial Statement Error Correction", "label": "Document Financial Statement Error Correction [Flag]", "documentation": "Indicates whether any of the financial statement period in the filing include a restatement due to error correction." } } }, "auth_ref": [ "r743", "r744", "r757", "r793" ] }, "dei_DocumentFiscalPeriodFocus": { "xbrltype": "fiscalPeriodItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentFiscalPeriodFocus", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Fiscal Period Focus", "label": "Document Fiscal Period Focus", "documentation": "Fiscal period values are FY, Q1, Q2, and Q3. 1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY." } } }, "auth_ref": [] }, "dei_DocumentFiscalYearFocus": { "xbrltype": "gYearItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentFiscalYearFocus", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Fiscal Year Focus", "label": "Document Fiscal Year Focus", "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006." } } }, "auth_ref": [] }, "dei_DocumentPeriodEndDate": { "xbrltype": "dateItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentPeriodEndDate", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Period End Date", "label": "Document Period End Date", "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD." } } }, "auth_ref": [] }, "dei_DocumentTransitionReport": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentTransitionReport", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Transition Report", "label": "Document Transition Report", "documentation": "Boolean flag that is true only for a form used as a transition report." } } }, "auth_ref": [ "r778" ] }, "dei_DocumentType": { "xbrltype": "submissionTypeItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentType", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Type", "label": "Document Type", "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'." } } }, "auth_ref": [] }, "dei_DocumentsIncorporatedByReferenceTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "DocumentsIncorporatedByReferenceTextBlock", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Documents Incorporated by Reference", "label": "Documents Incorporated by Reference [Text Block]", "documentation": "Documents incorporated by reference." } } }, "auth_ref": [ "r741" ] }, "us-gaap_DomesticCountryMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "DomesticCountryMember", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Domestic Tax Authority", "label": "Domestic Tax Authority [Member]", "documentation": "Designated tax department of the government that is entitled to levy and collect income taxes from the entity in its country of domicile." } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Net income per share", "label": "Earnings Per Share [Abstract]" } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareBasic": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareBasic", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Basic (in dollars per share)", "label": "Earnings Per Share, Basic", "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period." } } }, "auth_ref": [ "r216", "r232", "r233", "r234", "r235", "r236", "r241", "r243", "r256", "r257", "r258", "r262", "r502", "r503", "r573", "r593", "r701" ] }, "spsc_EarningsPerShareBasicAndDilutedEPSAbstract": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "EarningsPerShareBasicAndDilutedEPSAbstract", "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Net income per share", "label": "Earnings Per Share, Basic And Diluted EPS [Abstract]", "documentation": "Earnings Per Share, Basic And Diluted EPS" } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareDiluted": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareDiluted", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Diluted (in dollars per share)", "label": "Earnings Per Share, Diluted", "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period." } } }, "auth_ref": [ "r216", "r232", "r233", "r234", "r235", "r236", "r243", "r256", "r257", "r258", "r262", "r502", "r503", "r573", "r593", "r701" ] }, "us-gaap_EarningsPerSharePolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerSharePolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Net Income Per Share", "label": "Earnings Per Share, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for computing basic and diluted earnings or loss per share for each class of common stock and participating security. Addresses all significant policy factors, including any antidilutive items that have been excluded from the computation and takes into account stock dividends, splits and reverse splits that occur after the balance sheet date of the latest reporting period but before the issuance of the financial statements." } } }, "auth_ref": [ "r46", "r47" ] }, "us-gaap_EarningsPerShareTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EarningsPerShareTextBlock", "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShare" ], "lang": { "en-us": { "role": { "terseLabel": "Net Income Per Share", "label": "Earnings Per Share [Text Block]", "documentation": "The entire disclosure for earnings per share." } } }, "auth_ref": [ "r240", "r259", "r260", "r261" ] }, "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Effect of foreign currency exchange rate changes", "label": "Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations", "documentation": "Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r885" ] }, "us-gaap_EffectiveIncomeTaxRateContinuingOperations": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateContinuingOperations", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Effective tax rate", "label": "Effective Income Tax Rate Reconciliation, Percent", "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations." } } }, "auth_ref": [ "r465" ] }, "us-gaap_EffectiveIncomeTaxRateContinuingOperationsTaxRateReconciliationAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateContinuingOperationsTaxRateReconciliationAbstract", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Increase (decrease) resulting from:", "label": "Effective Income Tax Rate Reconciliation, Percent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "U.S. statutory federal income tax rate", "label": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent", "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss)." } } }, "auth_ref": [ "r226", "r465", "r481" ] }, "us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateReconciliationFdiiPercent", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": -1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Foreign derived intangible income", "label": "Effective Income Tax Rate Reconciliation, FDII, Percent", "documentation": "Percentage of reported income tax benefit from difference to income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operations, attributable to foreign-derived intangible income (FDII)." } } }, "auth_ref": [ "r877" ] }, "spsc_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseForCompensation": { "xbrltype": "percentItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "EffectiveIncomeTaxRateReconciliationNondeductibleExpenseForCompensation", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Nondeductible compensation", "label": "Effective Income Tax Rate Reconciliation Nondeductible Expense For Compensation", "documentation": "Effective income tax rate reconciliation nondeductible expense for compensation." } } }, "auth_ref": [] }, "us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateReconciliationOtherAdjustments", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other", "label": "Effective Income Tax Rate Reconciliation, Other Adjustments, Percent", "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments." } } }, "auth_ref": [ "r877", "r882" ] }, "us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "U.S. state income taxes, net of federal tax effect", "label": "Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Percent", "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit)." } } }, "auth_ref": [ "r877", "r882" ] }, "spsc_EffectiveIncomeTaxRateReconciliationTaxBenefitsForExcessTaxDeductionFromStockActivity": { "xbrltype": "percentItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "EffectiveIncomeTaxRateReconciliationTaxBenefitsForExcessTaxDeductionFromStockActivity", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Tax impact of stock activity", "label": "Effective Income Tax Rate Reconciliation Tax Benefits For Excess Tax Deduction From Stock Activity", "documentation": "Effective income tax rate reconciliation tax benefits for excess tax deduction from stock activity." } } }, "auth_ref": [] }, "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EffectiveIncomeTaxRateReconciliationTaxCreditsResearch", "calculation": { "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails": { "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations", "weight": -1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesScheduleofIncomeTaxExpenseDifferedfromAmountsComputedbyapplyingUSFederalIncomeTaxRatetoPretaxIncomeDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Research and development credit", "label": "Effective Income Tax Rate Reconciliation, Tax Credit, Research, Percent", "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax credit." } } }, "auth_ref": [ "r877", "r882" ] }, "us-gaap_EmployeeRelatedLiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeRelatedLiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued compensation", "label": "Employee-related Liabilities, Current", "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r32" ] }, "us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items]", "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [] }, "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Unrecognized stock-based compensation expense", "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount", "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement." } } }, "auth_ref": [ "r447" ] }, "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Unrecognized stock-based compensation, expected to be recognized, weighted average period", "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition", "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r447" ] }, "us-gaap_EmployeeStockMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeStockMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Employee Stock Purchase Plan", "label": "Employee Stock [Member]", "documentation": "An Employee Stock Purchase Plan is a tax-efficient means by which employees of a corporation can purchase the corporation's stock." } } }, "auth_ref": [] }, "us-gaap_EmployeeStockOptionMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EmployeeStockOptionMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Stock options", "label": "Employee Stock Option [Member]", "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time." } } }, "auth_ref": [] }, "spsc_EmployeeStockPurchasePlanMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "EmployeeStockPurchasePlanMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "ESPP", "label": "Employee Stock Purchase Plan [Member]", "documentation": "Employee stock purchase plan." } } }, "auth_ref": [] }, "dei_EntityAddressAddressLine1": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressAddressLine1", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, Address Line One", "label": "Entity Address, Address Line One", "documentation": "Address Line 1 such as Attn, Building Name, Street Name" } } }, "auth_ref": [] }, "dei_EntityAddressAddressLine2": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressAddressLine2", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, Address Line Two", "label": "Entity Address, Address Line Two", "documentation": "Address Line 2 such as Street or Suite number" } } }, "auth_ref": [] }, "dei_EntityAddressCityOrTown": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressCityOrTown", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, City or Town", "label": "Entity Address, City or Town", "documentation": "Name of the City or Town" } } }, "auth_ref": [] }, "dei_EntityAddressPostalZipCode": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressPostalZipCode", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, Postal Zip Code", "label": "Entity Address, Postal Zip Code", "documentation": "Code for the postal or zip code" } } }, "auth_ref": [] }, "dei_EntityAddressStateOrProvince": { "xbrltype": "stateOrProvinceItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityAddressStateOrProvince", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, State or Province", "label": "Entity Address, State or Province", "documentation": "Name of the state or province." } } }, "auth_ref": [] }, "dei_EntityCentralIndexKey": { "xbrltype": "centralIndexKeyItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityCentralIndexKey", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Central Index Key", "label": "Entity Central Index Key", "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK." } } }, "auth_ref": [ "r740" ] }, "dei_EntityCommonStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityCommonStockSharesOutstanding", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Common Stock, Shares Outstanding", "label": "Entity Common Stock, Shares Outstanding", "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument." } } }, "auth_ref": [] }, "dei_EntityCurrentReportingStatus": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityCurrentReportingStatus", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Current Reporting Status", "label": "Entity Current Reporting Status", "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure." } } }, "auth_ref": [] }, "dei_EntityEmergingGrowthCompany": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityEmergingGrowthCompany", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Emerging Growth Company", "label": "Entity Emerging Growth Company", "documentation": "Indicate if registrant meets the emerging growth company criteria." } } }, "auth_ref": [ "r740" ] }, "dei_EntityFileNumber": { "xbrltype": "fileNumberItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityFileNumber", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity File Number", "label": "Entity File Number", "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen." } } }, "auth_ref": [] }, "dei_EntityFilerCategory": { "xbrltype": "filerCategoryItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityFilerCategory", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Filer Category", "label": "Entity Filer Category", "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure." } } }, "auth_ref": [ "r740" ] }, "dei_EntityIncorporationStateCountryCode": { "xbrltype": "edgarStateCountryItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityIncorporationStateCountryCode", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Incorporation, State or Country Code", "label": "Entity Incorporation, State or Country Code", "documentation": "Two-character EDGAR code representing the state or country of incorporation." } } }, "auth_ref": [] }, "dei_EntityInteractiveDataCurrent": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityInteractiveDataCurrent", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Interactive Data Current", "label": "Entity Interactive Data Current", "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)." } } }, "auth_ref": [ "r818" ] }, "dei_EntityPublicFloat": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityPublicFloat", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Public Float", "label": "Entity Public Float", "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter." } } }, "auth_ref": [] }, "dei_EntityRegistrantName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityRegistrantName", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Registrant Name", "label": "Entity Registrant Name", "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC." } } }, "auth_ref": [ "r740" ] }, "dei_EntityShellCompany": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityShellCompany", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Shell Company", "label": "Entity Shell Company", "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act." } } }, "auth_ref": [ "r740" ] }, "dei_EntitySmallBusiness": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntitySmallBusiness", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Small Business", "label": "Entity Small Business", "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)." } } }, "auth_ref": [ "r740" ] }, "dei_EntityTaxIdentificationNumber": { "xbrltype": "employerIdItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityTaxIdentificationNumber", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Tax Identification Number", "label": "Entity Tax Identification Number", "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS." } } }, "auth_ref": [ "r740" ] }, "dei_EntityVoluntaryFilers": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityVoluntaryFilers", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Voluntary Filers", "label": "Entity Voluntary Filers", "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act." } } }, "auth_ref": [] }, "dei_EntityWellKnownSeasonedIssuer": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "EntityWellKnownSeasonedIssuer", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Well-known Seasoned Issuer", "label": "Entity Well-known Seasoned Issuer", "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A." } } }, "auth_ref": [ "r819" ] }, "us-gaap_EquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EquityAbstract", "lang": { "en-us": { "role": { "terseLabel": "Equity [Abstract]", "label": "Equity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_EquityComponentDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "EquityComponentDomain", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Component", "label": "Equity Component [Domain]", "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc." } } }, "auth_ref": [ "r23", "r186", "r212", "r213", "r214", "r227", "r228", "r229", "r231", "r237", "r239", "r263", "r324", "r325", "r379", "r449", "r450", "r451", "r475", "r476", "r493", "r494", "r495", "r496", "r497", "r498", "r501", "r510", "r511", "r512", "r513", "r514", "r515", "r528", "r603", "r604", "r605", "r622", "r677" ] }, "ecd_EquityValuationAssumptionDifferenceFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "EquityValuationAssumptionDifferenceFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Valuation Assumption Difference, Footnote", "label": "Equity Valuation Assumption Difference, Footnote [Text Block]" } } }, "auth_ref": [ "r786" ] }, "ecd_ErrCompAnalysisTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ErrCompAnalysisTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Erroneous Compensation Analysis", "label": "Erroneous Compensation Analysis [Text Block]" } } }, "auth_ref": [ "r749", "r761", "r771", "r797" ] }, "ecd_ErrCompRecoveryTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ErrCompRecoveryTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Erroneously Awarded Compensation Recovery", "label": "Erroneously Awarded Compensation Recovery [Table]" } } }, "auth_ref": [ "r746", "r758", "r768", "r794" ] }, "ecd_ExecutiveCategoryAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ExecutiveCategoryAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Executive Category:", "label": "Executive Category [Axis]" } } }, "auth_ref": [ "r792" ] }, "us-gaap_FairValueDisclosuresAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueDisclosuresAbstract", "lang": { "en-us": { "role": { "terseLabel": "Fair Value Disclosures [Abstract]", "label": "Fair Value Disclosures [Abstract]" } } }, "auth_ref": [] }, "us-gaap_FairValueOfFinancialInstrumentsPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FairValueOfFinancialInstrumentsPolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value Measurements", "label": "Fair Value of Financial Instruments, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for determining the fair value of financial instruments." } } }, "auth_ref": [ "r16", "r29" ] }, "us-gaap_FinancialInstrumentAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FinancialInstrumentAxis", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Financial Instrument [Axis]", "label": "Financial Instrument [Axis]", "documentation": "Information by type of financial instrument." } } }, "auth_ref": [ "r292", "r293", "r294", "r295", "r296", "r297", "r298", "r299", "r300", "r301", "r302", "r303", "r304", "r305", "r306", "r307", "r308", "r309", "r310", "r311", "r312", "r313", "r314", "r315", "r316", "r317", "r318", "r319", "r320", "r321", "r327", "r328", "r331", "r332", "r333", "r335", "r336", "r337", "r364", "r377", "r499", "r535", "r536", "r537", "r538", "r539", "r540", "r541", "r542", "r543", "r544", "r545", "r546", "r547", "r548", "r549", "r550", "r551", "r552", "r553", "r554", "r555", "r556", "r557", "r558", "r559", "r560", "r561", "r562", "r563", "r564", "r591", "r709", "r824", "r825", "r826", "r827", "r828", "r829", "r830", "r849", "r850", "r851", "r852" ] }, "us-gaap_FinancialInstrumentsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FinancialInstrumentsDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurements" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value Measurements", "label": "Financial Instruments Disclosure [Text Block]", "documentation": "The entire disclosure for financial instruments. This disclosure includes, but is not limited to, fair value measurements of short and long term marketable securities, international currencies forward contracts, and auction rate securities. Financial instruments may include hedging and non-hedging currency exchange instruments, derivatives, securitizations and securities available for sale at fair value. Also included are investment results, realized and unrealized gains and losses as well as impairments and risk management disclosures." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived and Indefinite-Lived Intangible Assets Acquired as Part of Business Combination", "label": "Finite-Lived and Indefinite-Lived Intangible Assets Acquired as Part of Business Combination [Table Text Block]", "documentation": "Tabular disclosure of finite-lived and indefinite-lived intangible assets acquired as part of a business combination." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetUsefulLife": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetUsefulLife", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Estimated useful lives of intangible assets", "label": "Finite-Lived Intangible Asset, Useful Life", "documentation": "Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Accumulated Amortization", "label": "Finite-Lived Intangible Assets, Accumulated Amortization", "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r194", "r345" ] }, "spsc_FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign Currency Translation", "label": "Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss", "documentation": "Finite lived intangible assets accumulated foreign currency translation gain (loss)." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Thereafter", "label": "Finite-Lived Intangible Asset, Expected Amortization, after Year Five", "documentation": "Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2024", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year One", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r123" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Amortization Expense of Intangible Assets", "label": "Finite-Lived Intangible Assets Amortization Expense [Table Text Block]", "documentation": "Tabular disclosure of amortization expense of assets, excluding financial assets, that lack physical substance, having a limited useful life." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2028", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Five", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r123" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2027", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Four", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r123" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2026", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Three", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r123" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2025", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Two", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r123" ] }, "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived Intangible Assets by Major Class", "label": "Finite-Lived Intangible Assets by Major Class [Axis]", "documentation": "Information by major type or class of finite-lived intangible assets." } } }, "auth_ref": [ "r343", "r344", "r345", "r346", "r568", "r569" ] }, "us-gaap_FiniteLivedIntangibleAssetsGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsGross", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Gross Carrying Amount", "label": "Finite-Lived Intangible Assets, Gross", "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r122", "r569" ] }, "us-gaap_FiniteLivedIntangibleAssetsLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsLineItems", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived Intangible Assets [Line Items]", "label": "Finite-Lived Intangible Assets [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r568" ] }, "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived Intangible Assets, Major Class Name", "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]", "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company." } } }, "auth_ref": [ "r59", "r60" ] }, "us-gaap_FiniteLivedIntangibleAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsNet", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 5.0 }, "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails": { "parentTag": null, "weight": null, "order": null, "root": true }, "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Intangible assets, net", "totalLabel": "Total future amortization", "label": "Finite-Lived Intangible Assets, Net", "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r122", "r568" ] }, "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted Average Remaining Amortization Period", "label": "Finite-Lived Intangible Assets, Remaining Amortization Period", "documentation": "Remaining amortization period of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r568" ] }, "us-gaap_ForeignCountryMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ForeignCountryMember", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign Tax Authority", "label": "Foreign Tax Authority [Member]", "documentation": "Designated tax departments of governments entitled to levy and collect income taxes from the entity outside the entity's country of domicile." } } }, "auth_ref": [] }, "us-gaap_ForeignCurrencyTransactionGainLossBeforeTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ForeignCurrencyTransactionGainLossBeforeTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Realized gain (loss) from foreign currency on cash and investments held", "label": "Gain (Loss), Foreign Currency Transaction, before Tax", "documentation": "Amount, before tax, of realized and unrealized gain (loss) from foreign currency transaction." } } }, "auth_ref": [ "r506", "r507", "r508", "r509", "r674" ] }, "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign Currency Translation", "label": "Foreign Currency Transactions and Translations Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy." } } }, "auth_ref": [ "r505" ] }, "ecd_ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery due to Disqualification of Tax Benefits, Amount", "label": "Forgone Recovery due to Disqualification of Tax Benefits, Amount" } } }, "auth_ref": [ "r753", "r765", "r775", "r801" ] }, "ecd_ForgoneRecoveryDueToExpenseOfEnforcementAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryDueToExpenseOfEnforcementAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery due to Expense of Enforcement, Amount", "label": "Forgone Recovery due to Expense of Enforcement, Amount" } } }, "auth_ref": [ "r753", "r765", "r775", "r801" ] }, "ecd_ForgoneRecoveryDueToViolationOfHomeCountryLawAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryDueToViolationOfHomeCountryLawAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery due to Violation of Home Country Law, Amount", "label": "Forgone Recovery due to Violation of Home Country Law, Amount" } } }, "auth_ref": [ "r753", "r765", "r775", "r801" ] }, "ecd_ForgoneRecoveryExplanationOfImpracticabilityTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryExplanationOfImpracticabilityTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery, Explanation of Impracticability", "label": "Forgone Recovery, Explanation of Impracticability [Text Block]" } } }, "auth_ref": [ "r753", "r765", "r775", "r801" ] }, "ecd_ForgoneRecoveryIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "ForgoneRecoveryIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Forgone Recovery, Individual Name" } } }, "auth_ref": [ "r753", "r765", "r775", "r801" ] }, "spsc_FourZeroOneKStockMatchMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "FourZeroOneKStockMatchMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "401(k) stock match", "label": "Four Zero One K Stock Match [Member]", "documentation": "Four zero one (k) stock match." } } }, "auth_ref": [] }, "spsc_FulfillmentMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "FulfillmentMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fulfillment", "label": "Fulfillment [Member]", "documentation": "Fulfillment." } } }, "auth_ref": [] }, "spsc_GCommerceIncMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "GCommerceIncMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "GCommerce Inc", "label": "GCommerce Inc [Member]", "documentation": "GCommerce Inc" } } }, "auth_ref": [] }, "us-gaap_GeneralAndAdministrativeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeneralAndAdministrativeExpense", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "General and administrative", "label": "General and Administrative Expense", "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line." } } }, "auth_ref": [ "r110", "r656" ] }, "us-gaap_GeneralAndAdministrativeExpenseMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeneralAndAdministrativeExpenseMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "General and administrative", "label": "General and Administrative Expense [Member]", "documentation": "Primary financial statement caption encompassing general and administrative expense." } } }, "auth_ref": [ "r107" ] }, "us-gaap_GeographicConcentrationRiskMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeographicConcentrationRiskMember", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Geographic Concentration Risk", "label": "Geographic Concentration Risk [Member]", "documentation": "Reflects the percentage that a specified dollar value on the balance sheet or income statement in the period from one or more specified geographic areas is to a corresponding consolidated, segment, or product line amount. Risk is the materially adverse effects of economic decline or antagonistic political actions resulting in loss of assets, sales volume, labor supply, or source of materials and supplies in a US state or a specified country, continent, or region such as EMEA (Europe, Middle East, Africa)." } } }, "auth_ref": [ "r50", "r692" ] }, "us-gaap_GeographicDistributionAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeographicDistributionAxis", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Geographic Distribution", "label": "Geographic Distribution [Axis]", "documentation": "Information by geographic distribution of business activity identified as either domestic or foreign. Excludes names of countries, states and provinces, and cities." } } }, "auth_ref": [ "r168", "r169", "r170", "r171", "r172", "r173", "r174", "r175", "r176", "r177", "r178", "r179", "r180", "r181", "r182", "r183", "r184", "r185", "r574", "r575", "r706" ] }, "us-gaap_GeographicDistributionDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeographicDistributionDomain", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Geographic Distribution", "label": "Geographic Distribution [Domain]", "documentation": "Allocation of business activity identified as domestic or foreign. Excludes names of countries, states and provinces, and cities." } } }, "auth_ref": [ "r168", "r169", "r170", "r171", "r172", "r173", "r174", "r175", "r176", "r177", "r178", "r179", "r180", "r181", "r182", "r183", "r184", "r185", "r574", "r575" ] }, "us-gaap_GeographicDistributionDomesticMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeographicDistributionDomesticMember", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Domestic revenue", "label": "Geographic Distribution, Domestic [Member]", "documentation": "Allocation of business activity identified as domestic." } } }, "auth_ref": [ "r168", "r169", "r170", "r171", "r172", "r173", "r174", "r175", "r176", "r177", "r178", "r179", "r180", "r181", "r182", "r183", "r184", "r185", "r707" ] }, "us-gaap_GeographicDistributionForeignMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GeographicDistributionForeignMember", "presentation": [ "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign", "label": "Geographic Distribution, Foreign [Member]", "documentation": "Allocation of business activity identified as foreign." } } }, "auth_ref": [ "r168", "r169", "r170", "r171", "r172", "r173", "r174", "r175", "r176", "r177", "r178", "r179", "r180", "r181", "r182", "r183", "r184", "r185", "r574", "r575", "r708" ] }, "spsc_GeographicInformationTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "GeographicInformationTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeographicInformation" ], "lang": { "en-us": { "role": { "terseLabel": "Geographic Information", "label": "Geographic Information [Text Block]", "documentation": "The entire disclosure of geographic information." } } }, "auth_ref": [] }, "us-gaap_Goodwill": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Goodwill", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "http://www.spscommerce.com/role/ConsolidatedBalanceSheets", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails" ], "lang": { "en-us": { "role": { "netLabel": "Goodwill", "terseLabel": "Goodwill", "periodStartLabel": "Balance, beginning of year", "periodEndLabel": "Balance, end of year", "label": "Goodwill", "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized." } } }, "auth_ref": [ "r193", "r339", "r570", "r710", "r726", "r856", "r863" ] }, "us-gaap_GoodwillAcquiredDuringPeriod": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAcquiredDuringPeriod", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Additions from business acquisitions", "label": "Goodwill, Acquired During Period", "documentation": "Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination." } } }, "auth_ref": [ "r340", "r710" ] }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract", "lang": { "en-us": { "role": { "terseLabel": "Goodwill and Intangible Assets Disclosure [Abstract]", "label": "Goodwill and Intangible Assets Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNet" ], "lang": { "en-us": { "role": { "terseLabel": "Goodwill and Intangible Assets, Net", "label": "Goodwill and Intangible Assets Disclosure [Text Block]", "documentation": "The entire disclosure for goodwill and intangible assets." } } }, "auth_ref": [ "r121" ] }, "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Goodwill", "label": "Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined." } } }, "auth_ref": [ "r338", "r342", "r710" ] }, "us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillAndIntangibleAssetsIntangibleAssetsPolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Intangible Assets", "label": "Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined." } } }, "auth_ref": [ "r17" ] }, "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillForeignCurrencyTranslationGainLoss", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign currency translation", "label": "Goodwill, Foreign Currency Translation Gain (Loss)", "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) an asset representing future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized." } } }, "auth_ref": [ "r341" ] }, "us-gaap_GoodwillPurchaseAccountingAdjustments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillPurchaseAccountingAdjustments", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustments, goodwill", "verboseLabel": "Remeasurement from provisional purchase accounting amount", "label": "Goodwill, Purchase Accounting Adjustments", "documentation": "Amount of increase (decrease) from adjustments after acquisition date under purchase accounting of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized." } } }, "auth_ref": [ "r2", "r862" ] }, "us-gaap_GoodwillRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GoodwillRollForward", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetScheduleofActivityinGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Goodwill [Roll Forward]", "label": "Goodwill [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_GrossProfit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "GrossProfit", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Gross profit", "label": "Gross Profit", "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity." } } }, "auth_ref": [ "r108", "r225", "r264", "r276", "r280", "r282", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r504", "r703", "r870" ] }, "dei_IcfrAuditorAttestationFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "IcfrAuditorAttestationFlag", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "ICFR Auditor Attestation Flag", "label": "ICFR Auditor Attestation Flag" } } }, "auth_ref": [ "r743", "r744", "r757" ] }, "us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Impairment of Long-Lived Assets", "label": "Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for recognizing and measuring the impairment of long-lived assets. An entity also may disclose its accounting policy for long-lived assets to be sold. This policy excludes goodwill and intangible assets." } } }, "auth_ref": [ "r0", "r127" ] }, "spsc_IncomeBeforeIncomeTaxMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "IncomeBeforeIncomeTaxMember", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Before Income Tax", "label": "Income Before Income Tax [Member]", "documentation": "Income Before Income Tax" } } }, "auth_ref": [] }, "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_NetIncomeLoss", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Income before income taxes", "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest", "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest." } } }, "auth_ref": [ "r1", "r105", "r151", "r264", "r276", "r280", "r282", "r575", "r589", "r703" ] }, "us-gaap_IncomeStatementAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeStatementAbstract", "lang": { "en-us": { "role": { "terseLabel": "Income Statement [Abstract]", "label": "Income Statement [Abstract]" } } }, "auth_ref": [] }, "us-gaap_IncomeStatementLocationAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeStatementLocationAxis", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Statement Location", "label": "Income Statement Location [Axis]", "documentation": "Information by location in the income statement." } } }, "auth_ref": [ "r347", "r348", "r661" ] }, "us-gaap_IncomeStatementLocationDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeStatementLocationDomain", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Statement Location", "label": "Income Statement Location [Domain]", "documentation": "Location in the income statement." } } }, "auth_ref": [ "r348", "r661" ] }, "us-gaap_IncomeTaxAuthorityAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxAuthorityAxis", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Tax Authority", "label": "Income Tax Authority [Axis]", "documentation": "Information by tax jurisdiction." } } }, "auth_ref": [ "r20" ] }, "us-gaap_IncomeTaxAuthorityDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxAuthorityDomain", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Tax Authority", "label": "Income Tax Authority [Domain]", "documentation": "Agency, division or body classification that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes." } } }, "auth_ref": [] }, "us-gaap_IncomeTaxAuthorityNameAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxAuthorityNameAxis", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Tax Authority, Name", "label": "Income Tax Authority, Name [Axis]", "documentation": "Information by name of taxing authority." } } }, "auth_ref": [ "r20" ] }, "us-gaap_IncomeTaxAuthorityNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxAuthorityNameDomain", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Tax Authority, Name", "label": "Income Tax Authority, Name [Domain]", "documentation": "Named agency, division or body that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes." } } }, "auth_ref": [] }, "us-gaap_IncomeTaxDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxDisclosureAbstract", "lang": { "en-us": { "role": { "terseLabel": "Income Tax Disclosure [Abstract]", "label": "Income Tax Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_IncomeTaxDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxes" ], "lang": { "en-us": { "role": { "terseLabel": "Income Taxes", "label": "Income Tax Disclosure [Text Block]", "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information." } } }, "auth_ref": [ "r226", "r459", "r466", "r467", "r473", "r477", "r482", "r483", "r484", "r618" ] }, "us-gaap_IncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_NetIncomeLoss", "weight": -1.0, "order": 2.0 }, "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/IncomeTaxesScheduleofProvisionforIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income tax expense", "totalLabel": "Total provision for income taxes", "label": "Income Tax Expense (Benefit)", "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations." } } }, "auth_ref": [ "r156", "r166", "r238", "r239", "r268", "r464", "r478", "r595" ] }, "spsc_IncomeTaxExpenseBenefitLineItems": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "IncomeTaxExpenseBenefitLineItems", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Tax Expense Benefit [Line Items]", "label": "Income Tax Expense Benefit [Line Items]", "documentation": "Income Tax Expense Benefit [Line Items]" } } }, "auth_ref": [] }, "spsc_IncomeTaxExpenseBenefitTable": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "IncomeTaxExpenseBenefitTable", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Income Tax Expense Benefit [Table]", "label": "Income Tax Expense Benefit [Table]", "documentation": "Income Tax Expense Benefit [Table]" } } }, "auth_ref": [] }, "us-gaap_IncomeTaxPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Income Taxes", "label": "Income Tax, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements." } } }, "auth_ref": [ "r211", "r460", "r461", "r467", "r468", "r472", "r474", "r616" ] }, "us-gaap_IncomeTaxesPaidNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncomeTaxesPaidNet", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Cash paid for income taxes", "label": "Income Taxes Paid, Net", "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes." } } }, "auth_ref": [ "r45" ] }, "us-gaap_IncreaseDecreaseInAccountsPayable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInAccountsPayable", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 11.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts payable", "label": "Increase (Decrease) in Accounts Payable", "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business." } } }, "auth_ref": [ "r13" ] }, "us-gaap_IncreaseDecreaseInAccountsReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInAccountsReceivable", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 8.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Accounts receivable", "label": "Increase (Decrease) in Accounts Receivable", "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services." } } }, "auth_ref": [ "r13" ] }, "us-gaap_IncreaseDecreaseInAccruedLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInAccruedLiabilities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 13.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued expenses", "label": "Increase (Decrease) in Accrued Liabilities", "documentation": "The increase (decrease) during the reporting period in the aggregate amount of expenses incurred but not yet paid." } } }, "auth_ref": [ "r13" ] }, "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInContractWithCustomerLiability", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 14.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred revenue", "label": "Increase (Decrease) in Contract with Customer, Liability", "documentation": "Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable." } } }, "auth_ref": [ "r566", "r836" ] }, "us-gaap_IncreaseDecreaseInDeferredCharges": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInDeferredCharges", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 9.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Deferred costs", "label": "Increase (Decrease) in Deferred Charges", "documentation": "The increase (decrease) during the reporting period in the value of expenditures made during the current reporting period for benefits that will be received over a period of years. Deferred charges differ from prepaid expenses in that they usually extend over a long period of time and may or may not be regularly recurring costs of operation." } } }, "auth_ref": [ "r13" ] }, "us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInEmployeeRelatedLiabilities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 12.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued compensation", "label": "Increase (Decrease) in Employee Related Liabilities", "documentation": "The increase (decrease) during the reporting period in the aggregate amount of obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits." } } }, "auth_ref": [ "r13" ] }, "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOperatingCapitalAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Changes in assets and liabilities, net of effects of acquisitions", "label": "Increase (Decrease) in Operating Capital [Abstract]" } } }, "auth_ref": [] }, "spsc_IncreaseDecreaseInOperatingLeases": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "IncreaseDecreaseInOperatingLeases", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 15.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Operating leases", "label": "Increase Decrease In Operating Leases", "documentation": "Increase decrease in operating leases." } } }, "auth_ref": [] }, "us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInOtherOperatingCapitalNet", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 10.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Other assets and liabilities", "label": "Increase (Decrease) in Other Operating Assets and Liabilities, Net", "documentation": "Amount of increase (decrease) in operating assets after deduction of operating liabilities classified as other." } } }, "auth_ref": [ "r13" ] }, "us-gaap_IncreaseDecreaseInStockholdersEquityRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncreaseDecreaseInStockholdersEquityRollForward", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Increase (Decrease) in Stockholders' Equity [Roll Forward]", "label": "Increase (Decrease) in Stockholders' Equity [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_IncrementalCommonSharesAttributableToContingentlyIssuableShares": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncrementalCommonSharesAttributableToContingentlyIssuableShares", "calculation": { "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "PSUs, RSUs, RSAs, and DSUs (n shares)", "label": "Incremental Common Shares Attributable to Dilutive Effect of Contingently Issuable Shares", "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of contingently issuable shares. Contingently issuable shares are those shares that are issuable for little or no cash contingent on certain conditions being met." } } }, "auth_ref": [ "r245", "r246", "r248", "r249", "r250", "r251", "r252", "r253", "r254", "r258" ] }, "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "calculation": { "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Options to purchase common stock and ESPP (in shares)", "label": "Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements", "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method." } } }, "auth_ref": [ "r244", "r245", "r247", "r258", "r413" ] }, "ecd_IndividualAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "IndividualAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure", "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure", "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Individual:", "label": "Individual [Axis]" } } }, "auth_ref": [ "r756", "r765", "r775", "r792", "r801", "r805", "r813" ] }, "ecd_InsiderTradingArrLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTradingArrLineItems", "lang": { "en-us": { "role": { "label": "Insider Trading Arrangements [Line Items]" } } }, "auth_ref": [ "r811" ] }, "ecd_InsiderTradingPoliciesProcLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTradingPoliciesProcLineItems", "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures [Line Items]" } } }, "auth_ref": [ "r745", "r817" ] }, "ecd_InsiderTrdPoliciesProcAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTrdPoliciesProcAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "lang": { "en-us": { "role": { "terseLabel": "Insider Trading Policies and Procedures Adopted", "label": "Insider Trading Policies and Procedures Adopted [Flag]" } } }, "auth_ref": [ "r745", "r817" ] }, "ecd_InsiderTrdPoliciesProcNotAdoptedTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "InsiderTrdPoliciesProcNotAdoptedTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "lang": { "en-us": { "role": { "terseLabel": "Insider Trading Policies and Procedures Not Adopted", "label": "Insider Trading Policies and Procedures Not Adopted [Text Block]" } } }, "auth_ref": [ "r745", "r817" ] }, "spsc_InterTradeSystemsIncMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "InterTradeSystemsIncMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "InterTrade Systems Inc.", "label": "InterTrade Systems Inc. [Member]", "documentation": "InterTrade Systems Inc." } } }, "auth_ref": [] }, "us-gaap_InternalRevenueServiceIRSMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InternalRevenueServiceIRSMember", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "U.S. Internal Revenue Code", "label": "Internal Revenue Service (IRS) [Member]", "documentation": "Designated tax department of the United States of America government entitled to levy and collect income taxes from the entity." } } }, "auth_ref": [] }, "spsc_InternallyDevelopedSoftwareMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "InternallyDevelopedSoftwareMember", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Internally developed software", "label": "Internally Developed Software [Member]", "documentation": "Internally developed software." } } }, "auth_ref": [] }, "us-gaap_InvestmentIncomeNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InvestmentIncomeNet", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Investment income", "label": "Investment Income, Net", "documentation": "Amount after accretion (amortization) of discount (premium), and investment expense, of interest income and dividend income on nonoperating securities." } } }, "auth_ref": [ "r111", "r113" ] }, "us-gaap_InvestmentPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "InvestmentPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Investments", "label": "Investment, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for investment in financial asset." } } }, "auth_ref": [ "r594", "r612", "r613", "r614", "r615", "r685", "r686" ] }, "us-gaap_LeaseCost": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LeaseCost", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Total Lease expense", "label": "Lease, Cost", "documentation": "Amount of lease cost recognized by lessee for lease contract." } } }, "auth_ref": [ "r520", "r725" ] }, "us-gaap_LeaseCostTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LeaseCostTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Components of Lease Expense", "label": "Lease, Cost [Table Text Block]", "documentation": "Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income." } } }, "auth_ref": [ "r887" ] }, "us-gaap_LeaseholdImprovementsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LeaseholdImprovementsMember", "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Leasehold improvements", "label": "Leasehold Improvements [Member]", "documentation": "Additions or improvements to assets held under a lease arrangement." } } }, "auth_ref": [ "r126" ] }, "us-gaap_LesseeLeasesPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeLeasesPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Leases", "label": "Lessee, Leases [Policy Text Block]", "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee." } } }, "auth_ref": [ "r519" ] }, "spsc_LesseeOperatingLeaseAreaOfLeasedSpace": { "xbrltype": "areaItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "LesseeOperatingLeaseAreaOfLeasedSpace", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Current leased space", "label": "Lessee, Operating Lease, Area Of Leased Space", "documentation": "Area of leased space." } } }, "auth_ref": [] }, "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Future Minimum Payments Under Operating Leases", "label": "Lessee, Operating Lease, Liability, to be Paid, Maturity [Table Text Block]", "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position." } } }, "auth_ref": [ "r888" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDue", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails": { "parentTag": null, "weight": null, "order": null, "root": true }, "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Total future gross payments", "label": "Lessee, Operating Lease, Liability, to be Paid", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Thereafter", "label": "Lessee, Operating Lease, Liability, to be Paid, after Year Five", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2024", "label": "Lessee, Operating Lease, Liability, to be Paid, Year One", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2028", "label": "Lessee, Operating Lease, Liability, to be Paid, Year Five", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2027", "label": "Lessee, Operating Lease, Liability, to be Paid, Year Four", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2026", "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2025", "label": "Lessee, Operating Lease, Liability, to be Paid, Year Two", "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r527" ] }, "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Less: imputed interest", "label": "Lessee, Operating Lease, Liability, Undiscounted Excess Amount", "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease." } } }, "auth_ref": [ "r527" ] }, "spsc_LesseeOperatingLeaseNumberOfExtensionOptions": { "xbrltype": "integerItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "LesseeOperatingLeaseNumberOfExtensionOptions", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of extension options", "label": "Lessee, Operating Lease, Number Of Extension Options", "documentation": "Lessee, Operating Lease, Number Of Extension Options" } } }, "auth_ref": [] }, "us-gaap_LesseeOperatingLeaseRenewalTerm": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LesseeOperatingLeaseRenewalTerm", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Lease extension period", "label": "Lessee, Operating Lease, Renewal Term", "documentation": "Term of lessee's operating lease renewal, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r886" ] }, "us-gaap_Liabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "Liabilities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total liabilities", "label": "Liabilities", "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future." } } }, "auth_ref": [ "r31", "r225", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r490", "r491", "r492", "r504", "r632", "r702", "r738", "r870", "r890", "r891" ] }, "us-gaap_LiabilitiesAndStockholdersEquity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesAndStockholdersEquity", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total liabilities and stockholders\u2019 equity", "label": "Liabilities and Equity", "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any." } } }, "auth_ref": [ "r103", "r148", "r585", "r726", "r837", "r853", "r884" ] }, "us-gaap_LiabilitiesAndStockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesAndStockholdersEquityAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "LIABILITIES AND STOCKHOLDERS\u2019 EQUITY", "label": "Liabilities and Equity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_LiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total current liabilities", "label": "Liabilities, Current", "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer." } } }, "auth_ref": [ "r33", "r189", "r225", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r490", "r491", "r492", "r504", "r726", "r870", "r890", "r891" ] }, "us-gaap_LiabilitiesCurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "LiabilitiesCurrentAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Current liabilities", "label": "Liabilities, Current [Abstract]" } } }, "auth_ref": [] }, "dei_LocalPhoneNumber": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "LocalPhoneNumber", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Local Phone Number", "label": "Local Phone Number", "documentation": "Local phone number for entity." } } }, "auth_ref": [] }, "spsc_MarketableSecuritiesMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "MarketableSecuritiesMember", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Marketable securities:", "label": "Marketable Securities [Member]", "documentation": "Marketable Securities" } } }, "auth_ref": [] }, "srt_MaximumMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "MaximumMember", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/RevenueNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Maximum", "label": "Maximum [Member]", "documentation": "Upper limit of the provided range." } } }, "auth_ref": [ "r351", "r352", "r353", "r354", "r408", "r565", "r602", "r624", "r625", "r684", "r687", "r688", "r689", "r690", "r694", "r695", "r705", "r711", "r722", "r728", "r872", "r892", "r893", "r894", "r895", "r896", "r897" ] }, "spsc_MaximumRecognitionPeriodForMiscellaneousOneTimeFee": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "MaximumRecognitionPeriodForMiscellaneousOneTimeFee", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Maximum recognition period for miscellaneous one-time fee", "label": "Maximum Recognition Period For Miscellaneous One Time Fee", "documentation": "Maximum recognition period for miscellaneous one-time fee." } } }, "auth_ref": [] }, "ecd_MeasureAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MeasureAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Measure:", "label": "Measure [Axis]" } } }, "auth_ref": [ "r784" ] }, "ecd_MeasureName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MeasureName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Measure Name" } } }, "auth_ref": [ "r784" ] }, "srt_MinimumMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "MinimumMember", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Minimum", "label": "Minimum [Member]", "documentation": "Lower limit of the provided range." } } }, "auth_ref": [ "r351", "r352", "r353", "r354", "r408", "r565", "r602", "r624", "r625", "r684", "r687", "r688", "r689", "r690", "r694", "r695", "r705", "r711", "r722", "r728", "r872", "r892", "r893", "r894", "r895", "r896", "r897" ] }, "ecd_MnpiDiscTimedForCompValFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MnpiDiscTimedForCompValFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "MNPI Disclosure Timed for Compensation Value", "label": "MNPI Disclosure Timed for Compensation Value [Flag]" } } }, "auth_ref": [ "r804" ] }, "us-gaap_MoneyMarketFundsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "MoneyMarketFundsMember", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Money market funds", "label": "Money Market Funds [Member]", "documentation": "Fund that invests in short-term money-market instruments, for example, but not limited to, commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and other highly liquid securities." } } }, "auth_ref": [ "r875" ] }, "ecd_MtrlTermsOfTrdArrTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "MtrlTermsOfTrdArrTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Material Terms of Trading Arrangement", "label": "Material Terms of Trading Arrangement [Text Block]" } } }, "auth_ref": [ "r812" ] }, "ecd_NamedExecutiveOfficersFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NamedExecutiveOfficersFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Named Executive Officers, Footnote", "label": "Named Executive Officers, Footnote [Text Block]" } } }, "auth_ref": [ "r785" ] }, "us-gaap_NetCashProvidedByUsedInFinancingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInFinancingActivities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net cash provided by (used in) financing activities", "label": "Net Cash Provided by (Used in) Financing Activities", "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit." } } }, "auth_ref": [ "r222" ] }, "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Cash flows from financing activities", "label": "Net Cash Provided by (Used in) Financing Activities [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NetCashProvidedByUsedInInvestingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInInvestingActivities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net cash used in investing activities", "label": "Net Cash Provided by (Used in) Investing Activities", "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets." } } }, "auth_ref": [ "r222" ] }, "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Cash flows from investing activities", "label": "Net Cash Provided by (Used in) Investing Activities [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NetCashProvidedByUsedInOperatingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInOperatingActivities", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net cash provided by operating activities", "label": "Net Cash Provided by (Used in) Operating Activities", "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities." } } }, "auth_ref": [ "r117", "r118", "r119" ] }, "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Net Cash Provided by (Used in) Operating Activities [Abstract]", "label": "Net Cash Provided by (Used in) Operating Activities [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NetIncomeLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetIncomeLoss", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax", "weight": 1.0, "order": 1.0 }, "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows", "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "totalLabel": "Net income", "verboseLabel": "Net income", "terseLabel": "Net income", "label": "Net Income (Loss)", "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent." } } }, "auth_ref": [ "r106", "r119", "r152", "r187", "r206", "r209", "r214", "r225", "r230", "r232", "r233", "r234", "r235", "r238", "r239", "r255", "r264", "r276", "r280", "r282", "r323", "r355", "r356", "r357", "r358", "r359", "r360", "r361", "r362", "r363", "r503", "r504", "r590", "r654", "r675", "r676", "r703", "r737", "r870" ] }, "us-gaap_NetIncomeLossAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NetIncomeLossAbstract", "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Numerator", "label": "Net Income (Loss) Attributable to Parent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Accounting Pronouncements Recently Adopted and Accounting Pronouncements Not Yet Adopted", "label": "New Accounting Pronouncements, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact." } } }, "auth_ref": [] }, "ecd_NonGaapMeasureDescriptionTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonGaapMeasureDescriptionTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-GAAP Measure Description", "label": "Non-GAAP Measure Description [Text Block]" } } }, "auth_ref": [ "r784" ] }, "ecd_NonNeosMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonNeosMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-NEOs", "label": "Non-NEOs [Member]" } } }, "auth_ref": [ "r753", "r765", "r775", "r792", "r801" ] }, "ecd_NonPeoNeoAvgCompActuallyPaidAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonPeoNeoAvgCompActuallyPaidAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-PEO NEO Average Compensation Actually Paid Amount", "label": "Non-PEO NEO Average Compensation Actually Paid Amount" } } }, "auth_ref": [ "r782" ] }, "ecd_NonPeoNeoAvgTotalCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonPeoNeoAvgTotalCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-PEO NEO Average Total Compensation Amount", "label": "Non-PEO NEO Average Total Compensation Amount" } } }, "auth_ref": [ "r781" ] }, "ecd_NonPeoNeoMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonPeoNeoMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-PEO NEO", "label": "Non-PEO NEO [Member]" } } }, "auth_ref": [ "r792" ] }, "ecd_NonRule10b51ArrAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonRule10b51ArrAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted", "label": "Non-Rule 10b5-1 Arrangement Adopted [Flag]" } } }, "auth_ref": [ "r812" ] }, "ecd_NonRule10b51ArrTrmntdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "NonRule10b51ArrTrmntdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated", "label": "Non-Rule 10b5-1 Arrangement Terminated [Flag]" } } }, "auth_ref": [ "r812" ] }, "us-gaap_NoncashInvestingAndFinancingItemsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NoncashInvestingAndFinancingItemsAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Non-cash financing activity:", "label": "Noncash Investing and Financing Items [Abstract]" } } }, "auth_ref": [] }, "spsc_NoncashOrPartNoncashAcquisitionContingentConsiderationLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "NoncashOrPartNoncashAcquisitionContingentConsiderationLiability", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Contingent consideration related to acquisition", "label": "Noncash Or Part Noncash Acquisition, Contingent Consideration Liability", "documentation": "Noncash Or Part Noncash Acquisition, Contingent Consideration Liability" } } }, "auth_ref": [] }, "us-gaap_NonoperatingIncomeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NonoperatingIncomeExpense", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0, "order": 2.0 }, "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails" ], "lang": { "en-us": { "role": { "verboseLabel": "Other income (expense), net", "totalLabel": "Total other income (expense), net", "label": "Nonoperating Income (Expense)", "documentation": "The aggregate amount of income or expense from ancillary business-related activities (that is to say, excluding major activities considered part of the normal operations of the business)." } } }, "auth_ref": [ "r112" ] }, "us-gaap_NumberOfOperatingSegments": { "xbrltype": "integerItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NumberOfOperatingSegments", "presentation": [ "http://www.spscommerce.com/role/GeneralNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of operating segment", "label": "Number of Operating Segments", "documentation": "Number of operating segments. An operating segment is a component of an enterprise: (a) that engages in business activities from which it may earn revenues and incur expenses (including revenues and expenses relating to transactions with other components of the same enterprise), (b) whose operating results are regularly reviewed by the enterprise's chief operating decision maker to make decisions about resources to be allocated to the segment and assess its performance, and (c) for which discrete financial information is available. An operating segment may engage in business activities for which it has yet to earn revenues, for example, start-up operations may be operating segments before earning revenues." } } }, "auth_ref": [ "r844" ] }, "us-gaap_NumberOfReportableSegments": { "xbrltype": "integerItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "NumberOfReportableSegments", "presentation": [ "http://www.spscommerce.com/role/GeneralNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of reportable segment", "label": "Number of Reportable Segments", "documentation": "Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements." } } }, "auth_ref": [ "r844" ] }, "spsc_OfficeEquipmentAndFurnitureMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "OfficeEquipmentAndFurnitureMember", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "verboseLabel": "Office equipment and furniture", "label": "Office Equipment And Furniture [Member]", "documentation": "Office equipment and furniture." } } }, "auth_ref": [] }, "spsc_OneTimeRevenuesMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "OneTimeRevenuesMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "One-time revenues", "label": "One Time Revenues [Member]", "documentation": "One time revenues." } } }, "auth_ref": [] }, "us-gaap_OperatingExpenses": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingExpenses", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Total operating expenses", "label": "Operating Expenses", "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense." } } }, "auth_ref": [] }, "us-gaap_OperatingExpensesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingExpensesAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Operating expenses", "label": "Operating Expenses [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OperatingIncomeLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingIncomeLoss", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Income from operations", "label": "Operating Income (Loss)", "documentation": "The net result for the period of deducting operating expenses from operating revenues." } } }, "auth_ref": [ "r264", "r276", "r280", "r282", "r703" ] }, "us-gaap_OperatingLeaseCost": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseCost", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails": { "parentTag": "us-gaap_LeaseCost", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Operating lease cost", "label": "Operating Lease, Cost", "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability." } } }, "auth_ref": [ "r521", "r725" ] }, "us-gaap_OperatingLeaseLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiability", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails": { "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofFutureMinimumPaymentsUnderOperatingLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Total operating lease liabilities", "label": "Operating Lease, Liability", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease." } } }, "auth_ref": [ "r517" ] }, "us-gaap_OperatingLeaseLiabilityCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilityCurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Operating lease liabilities", "label": "Operating Lease, Liability, Current", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current." } } }, "auth_ref": [ "r517" ] }, "us-gaap_OperatingLeaseLiabilityNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseLiabilityNoncurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Operating lease liabilities, non-current", "label": "Operating Lease, Liability, Noncurrent", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent." } } }, "auth_ref": [ "r517" ] }, "us-gaap_OperatingLeasePayments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeasePayments", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Operating cash flows from operating leases", "label": "Operating Lease, Payments", "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use." } } }, "auth_ref": [ "r518", "r523" ] }, "us-gaap_OperatingLeaseRightOfUseAsset": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseRightOfUseAsset", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Operating lease right-of-use assets", "label": "Operating Lease, Right-of-Use Asset", "documentation": "Amount of lessee's right to use underlying asset under operating lease." } } }, "auth_ref": [ "r516" ] }, "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseWeightedAverageDiscountRatePercent", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofSupplementalBalanceSheetInformationRelatedtoLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted-average discount rate", "label": "Operating Lease, Weighted Average Discount Rate, Percent", "documentation": "Weighted average discount rate for operating lease calculated at point in time." } } }, "auth_ref": [ "r526", "r725" ] }, "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesScheduleofSupplementalBalanceSheetInformationRelatedtoLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted-average remaining lease term", "label": "Operating Lease, Weighted Average Remaining Lease Term", "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r525", "r725" ] }, "spsc_OperatingLossCarryforwardExpirableUnusedAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "OperatingLossCarryforwardExpirableUnusedAmount", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Losses expected to expire unused", "label": "Operating Loss Carryforward Expirable Unused Amount", "documentation": "The amount of operating loss carryforwards expected to expire unused due to limitations." } } }, "auth_ref": [] }, "us-gaap_OperatingLossCarryforwards": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OperatingLossCarryforwards", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Net operating loss carryforward", "label": "Operating Loss Carryforwards", "documentation": "Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws." } } }, "auth_ref": [ "r76" ] }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract", "lang": { "en-us": { "role": { "terseLabel": "Organization, Consolidation and Presentation of Financial Statements [Abstract]", "label": "Organization, Consolidation and Presentation of Financial Statements [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/General" ], "lang": { "en-us": { "role": { "terseLabel": "General", "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]", "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure." } } }, "auth_ref": [ "r94", "r142", "r610", "r611" ] }, "us-gaap_OtherAssetsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherAssetsCurrent", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other assets", "label": "Other Assets, Current", "documentation": "Amount of current assets classified as other." } } }, "auth_ref": [ "r200", "r726" ] }, "us-gaap_OtherAssetsNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherAssetsNoncurrent", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 8.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other assets, non-current", "label": "Other Assets, Noncurrent", "documentation": "Amount of noncurrent assets classified as other." } } }, "auth_ref": [ "r195" ] }, "us-gaap_OtherAssetsNoncurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherAssetsNoncurrentAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other assets", "label": "Other Assets, Noncurrent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign currency translation adjustments", "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax", "documentation": "Amount before tax, after reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature." } } }, "auth_ref": [ "r7", "r104" ] }, "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Total other comprehensive income (expense)", "label": "Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent", "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity." } } }, "auth_ref": [ "r12", "r21", "r143", "r207", "r210" ] }, "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Other comprehensive income (expense)", "label": "Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "negatedLabel": "Reclassification of (gain) loss on investments into earnings, net of tax of $(564), $(55), and $63, respectively", "negatedTerseLabel": "Reclassification of gain (loss) on investments into earnings, net of tax", "label": "Other Comprehensive Income (Loss), Reclassification Adjustment from AOCI for Sale of Securities, Net of Tax", "documentation": "Amount after tax of reclassification adjustment from accumulated other comprehensive income for unrealized gain (loss) realized upon the sale of available-for-sale securities." } } }, "auth_ref": [ "r10", "r104", "r205", "r322" ] }, "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncomeParenthetical" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Reclassification of unrealized (gain) loss on investments into earnings, tax", "label": "Other Comprehensive Income (Loss), Reclassification Adjustment from AOCI for Sale of Securities, Tax", "documentation": "Amount of tax expense (benefit) of reclassification adjustment from accumulated other comprehensive income for unrealized gain (loss) realized upon the sale of available-for-sale securities." } } }, "auth_ref": [ "r8" ] }, "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Unrealized gain (loss) on investments, net of tax of $644, $147, and $(34), respectively", "verboseLabel": "Unrealized gain (loss) on investments, net of tax", "label": "OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax", "documentation": "Amount, after tax and before adjustment, of unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale." } } }, "auth_ref": [ "r202", "r204", "r322" ] }, "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncomeParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Unrealized gain (loss) on investments, tax", "label": "OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, Tax", "documentation": "Amount, before adjustment, of tax expense (benefit) for unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes tax expense (benefit) for unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale." } } }, "auth_ref": [ "r8", "r203" ] }, "us-gaap_OtherIncomeAndExpensesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherIncomeAndExpensesAbstract", "lang": { "en-us": { "role": { "terseLabel": "Other Income and Expenses [Abstract]", "label": "Other Income and Expenses [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OtherLiabilitiesNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherLiabilitiesNoncurrent", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other liabilities, non-current", "label": "Other Liabilities, Noncurrent", "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r34" ] }, "us-gaap_OtherLiabilitiesNoncurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherLiabilitiesNoncurrentAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other liabilities", "label": "Other Liabilities, Noncurrent [Abstract]" } } }, "auth_ref": [] }, "spsc_OtherMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "OtherMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other", "label": "Other [Member]", "documentation": "Other." } } }, "auth_ref": [] }, "us-gaap_OtherNoncashIncomeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherNoncashIncomeExpense", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 7.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Other, net", "label": "Other Noncash Income (Expense)", "documentation": "Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other." } } }, "auth_ref": [ "r119" ] }, "us-gaap_OtherNonoperatingIncomeAndExpenseTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherNonoperatingIncomeAndExpenseTextBlock", "presentation": [ "http://www.spscommerce.com/role/OtherIncomeandExpense" ], "lang": { "en-us": { "role": { "terseLabel": "Other Income and Expense", "label": "Other Nonoperating Income and Expense [Text Block]", "documentation": "The entire disclosure for the components of non-operating income or non-operating expense, including, but not limited to, amounts earned from dividends, interest on securities, gain (loss) on securities sold, equity earnings of unconsolidated affiliates, gain (loss) on sales of business, interest expense and other miscellaneous income or expense items." } } }, "auth_ref": [ "r218", "r219" ] }, "us-gaap_OtherNonoperatingIncomeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "OtherNonoperatingIncomeExpense", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails": { "parentTag": "us-gaap_NonoperatingIncomeExpense", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/OtherIncomeandExpenseSummaryofOtherIncomeExpenseNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other expense, net", "label": "Other Nonoperating Income (Expense)", "documentation": "Amount of income (expense) related to nonoperating activities, classified as other." } } }, "auth_ref": [ "r114" ] }, "ecd_OtherPerfMeasureAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OtherPerfMeasureAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Other Performance Measure, Amount", "label": "Other Performance Measure, Amount" } } }, "auth_ref": [ "r784" ] }, "ecd_OutstandingAggtErrCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OutstandingAggtErrCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Outstanding Aggregate Erroneous Compensation Amount", "label": "Outstanding Aggregate Erroneous Compensation Amount" } } }, "auth_ref": [ "r751", "r763", "r773", "r799" ] }, "ecd_OutstandingRecoveryCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OutstandingRecoveryCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Amount", "label": "Outstanding Recovery Compensation Amount" } } }, "auth_ref": [ "r754", "r766", "r776", "r802" ] }, "ecd_OutstandingRecoveryIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "OutstandingRecoveryIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Outstanding Recovery, Individual Name" } } }, "auth_ref": [ "r754", "r766", "r776", "r802" ] }, "ecd_PayVsPerformanceDisclosureLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PayVsPerformanceDisclosureLineItems", "lang": { "en-us": { "role": { "label": "Pay vs Performance Disclosure [Line Items]" } } }, "auth_ref": [ "r780" ] }, "us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentForContingentConsiderationLiabilityFinancingActivities", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Payments for contingent consideration", "label": "Payment for Contingent Consideration Liability, Financing Activities", "documentation": "Amount of cash outflow, not made soon after acquisition date of business combination, to settle contingent consideration liability up to amount recognized at acquisition date, including, but not limited to, measurement period adjustment and less amount paid soon after acquisition date." } } }, "auth_ref": [ "r11" ] }, "us-gaap_PaymentsForRepurchaseOfCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsForRepurchaseOfCommonStock", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Repurchases of common stock", "label": "Payments for Repurchase of Common Stock", "documentation": "The cash outflow to reacquire common stock during the period." } } }, "auth_ref": [ "r42" ] }, "us-gaap_PaymentsToAcquireBusinessesGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquireBusinessesGross", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cash paid", "label": "Payments to Acquire Businesses, Gross", "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price." } } }, "auth_ref": [ "r41", "r487" ] }, "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 4.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Acquisition of business, net", "label": "Payments to Acquire Businesses, Net of Cash Acquired", "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase." } } }, "auth_ref": [ "r41" ] }, "us-gaap_PaymentsToAcquireOtherInvestments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquireOtherInvestments", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Purchases of investments", "label": "Payments to Acquire Other Investments", "documentation": "Amount of cash outflow to acquire investments classified as other." } } }, "auth_ref": [ "r115" ] }, "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PaymentsToAcquirePropertyPlantAndEquipment", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Purchases of property and equipment", "label": "Payments to Acquire Property, Plant, and Equipment", "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets." } } }, "auth_ref": [ "r116" ] }, "ecd_PeerGroupIssuersFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeerGroupIssuersFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Peer Group Issuers, Footnote", "label": "Peer Group Issuers, Footnote [Text Block]" } } }, "auth_ref": [ "r783" ] }, "ecd_PeerGroupTotalShareholderRtnAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeerGroupTotalShareholderRtnAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Peer Group Total Shareholder Return Amount", "label": "Peer Group Total Shareholder Return Amount" } } }, "auth_ref": [ "r783" ] }, "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/RetirementSavingsPlan" ], "lang": { "en-us": { "role": { "terseLabel": "Retirement Contributions", "label": "Retirement Benefits [Text Block]", "documentation": "The entire disclosure for retirement benefits." } } }, "auth_ref": [ "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405", "r406", "r407", "r719" ] }, "ecd_PeoActuallyPaidCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoActuallyPaidCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO Actually Paid Compensation Amount", "label": "PEO Actually Paid Compensation Amount" } } }, "auth_ref": [ "r782" ] }, "ecd_PeoMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO", "label": "PEO [Member]" } } }, "auth_ref": [ "r792" ] }, "ecd_PeoName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO Name", "label": "PEO Name" } } }, "auth_ref": [ "r785" ] }, "ecd_PeoTotalCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PeoTotalCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO Total Compensation Amount", "label": "PEO Total Compensation Amount" } } }, "auth_ref": [ "r781" ] }, "spsc_PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PSUs, RSUs, RSAs and DSUs", "label": "Performance Share Units Restricted Stock Units Restricted Stock Awards And Deferred Stock Units [Member]", "documentation": "Performance Share Units, Restricted Stock Units, Restricted Stock Awards and Deferred Stock Units." } } }, "auth_ref": [] }, "us-gaap_PerformanceSharesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PerformanceSharesMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PSUs", "label": "Performance Shares [Member]", "documentation": "Share-based payment arrangement awarded for meeting performance target." } } }, "auth_ref": [] }, "us-gaap_PreferredStockParOrStatedValuePerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockParOrStatedValuePerShare", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, par value (in dollars per share)", "label": "Preferred Stock, Par or Stated Value Per Share", "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer." } } }, "auth_ref": [ "r97", "r366" ] }, "us-gaap_PreferredStockSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockSharesAuthorized", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, shares authorized (in shares)", "label": "Preferred Stock, Shares Authorized", "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws." } } }, "auth_ref": [ "r97", "r634" ] }, "us-gaap_PreferredStockSharesIssued": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockSharesIssued", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, shares issued (in shares)", "label": "Preferred Stock, Shares Issued", "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt." } } }, "auth_ref": [ "r97", "r366" ] }, "us-gaap_PreferredStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockSharesOutstanding", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, shares outstanding (in shares)", "label": "Preferred Stock, Shares Outstanding", "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased." } } }, "auth_ref": [ "r97", "r634", "r652", "r901", "r902" ] }, "us-gaap_PreferredStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PreferredStockValue", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding", "label": "Preferred Stock, Value, Issued", "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity." } } }, "auth_ref": [ "r97", "r581", "r726" ] }, "us-gaap_ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Maturities of investments", "label": "Proceeds from Sale and Maturity of Debt Securities, Available-for-Sale", "documentation": "Amount of cash inflow from sale, maturity, prepayment and call of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r220", "r221", "r846" ] }, "us-gaap_ProceedsFromStockOptionsExercised": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromStockOptionsExercised", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Net proceeds from exercise of options to purchase common stock", "label": "Proceeds from Stock Options Exercised", "documentation": "Amount of cash inflow from exercise of option under share-based payment arrangement." } } }, "auth_ref": [ "r9", "r26" ] }, "us-gaap_ProceedsFromStockPlans": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProceedsFromStockPlans", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Net proceeds from employee stock purchase plan activity", "label": "Proceeds from Stock Plans", "documentation": "The cash inflow associated with the amount received from the stock plan during the period." } } }, "auth_ref": [ "r9" ] }, "srt_ProductOrServiceAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ProductOrServiceAxis", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Product and Service", "label": "Product and Service [Axis]", "documentation": "Information by product and service, or group of similar products and similar services." } } }, "auth_ref": [ "r283", "r567", "r596", "r597", "r598", "r599", "r600", "r601", "r697", "r712", "r727", "r822", "r868", "r869", "r874", "r899" ] }, "srt_ProductsAndServicesDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "ProductsAndServicesDomain", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Product and Service", "label": "Product and Service [Domain]", "documentation": "Product or service, or a group of similar products or similar services." } } }, "auth_ref": [ "r283", "r567", "r596", "r597", "r598", "r599", "r600", "r601", "r697", "r712", "r727", "r822", "r868", "r869", "r874", "r899" ] }, "us-gaap_PropertyPlantAndEquipmentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentAbstract", "lang": { "en-us": { "role": { "terseLabel": "Property, Plant and Equipment [Abstract]", "label": "Property, Plant and Equipment [Abstract]" } } }, "auth_ref": [] }, "us-gaap_PropertyPlantAndEquipmentByTypeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentByTypeAxis", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Long-Lived Tangible Asset", "label": "Long-Lived Tangible Asset [Axis]", "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale." } } }, "auth_ref": [ "r15" ] }, "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNet" ], "lang": { "en-us": { "role": { "terseLabel": "Property and Equipment, Net", "label": "Property, Plant and Equipment Disclosure [Text Block]", "documentation": "The entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections." } } }, "auth_ref": [ "r125", "r160", "r163", "r164" ] }, "us-gaap_PropertyPlantAndEquipmentGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentGross", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails": { "parentTag": "us-gaap_PropertyPlantAndEquipmentNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Property and equipment, cost", "label": "Property, Plant and Equipment, Gross", "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures." } } }, "auth_ref": [ "r126", "r191", "r588" ] }, "us-gaap_PropertyPlantAndEquipmentLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentLineItems", "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails", "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Property, Plant and Equipment [Line Items]", "label": "Property, Plant and Equipment [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [] }, "us-gaap_PropertyPlantAndEquipmentMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentMember", "presentation": [ "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Property and Equipment", "label": "Property, Plant and Equipment [Member]", "documentation": "Physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures." } } }, "auth_ref": [] }, "us-gaap_PropertyPlantAndEquipmentNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentNet", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 2.0 }, "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets", "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Property and equipment, net", "totalLabel": "Total property and equipment, net", "label": "Property, Plant and Equipment, Net", "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures." } } }, "auth_ref": [ "r15", "r576", "r588", "r726" ] }, "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Property and Equipment", "label": "Property, Plant and Equipment, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections." } } }, "auth_ref": [ "r15", "r160", "r163", "r586" ] }, "us-gaap_PropertyPlantAndEquipmentTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralTables", "http://www.spscommerce.com/role/PropertyandEquipmentNetTables" ], "lang": { "en-us": { "role": { "verboseLabel": "Schedule of Estimated Useful Lives of Property and Equipment", "terseLabel": "Schedule of Property and Equipment, Net", "label": "Property, Plant and Equipment [Table Text Block]", "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation." } } }, "auth_ref": [ "r15" ] }, "us-gaap_PropertyPlantAndEquipmentTypeDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentTypeDomain", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Long-Lived Tangible Asset", "label": "Long-Lived Tangible Asset [Domain]", "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software." } } }, "auth_ref": [ "r126" ] }, "us-gaap_PropertyPlantAndEquipmentUsefulLife": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PropertyPlantAndEquipmentUsefulLife", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Estimated useful lives of property and equipment", "label": "Property, Plant and Equipment, Useful Life", "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment." } } }, "auth_ref": [] }, "us-gaap_ProvisionForDoubtfulAccounts": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ProvisionForDoubtfulAccounts", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails", "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Provision for credit losses", "label": "Accounts Receivable, Credit Loss Expense (Reversal)", "documentation": "Amount of expense (reversal of expense) for expected credit loss on accounts receivable." } } }, "auth_ref": [ "r217", "r329" ] }, "us-gaap_PurchaseObligation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PurchaseObligation", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Total remaining purchase commitments", "label": "Purchase Obligation", "documentation": "Minimum amount of purchase arrangement in which the entity has agreed to expend funds to procure goods or services from a supplier." } } }, "auth_ref": [] }, "us-gaap_PurchaseObligationDueInNextTwelveMonths": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PurchaseObligationDueInNextTwelveMonths", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": { "parentTag": "us-gaap_PurchaseObligation", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2024", "label": "Purchase Obligation, to be Paid, Year One", "documentation": "Amount of purchase arrangement to be paid in next fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [] }, "us-gaap_PurchaseObligationDueInSecondYear": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PurchaseObligationDueInSecondYear", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": { "parentTag": "us-gaap_PurchaseObligation", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2025", "label": "Purchase Obligation, to be Paid, Year Two", "documentation": "Amount of purchase arrangement to be paid in second fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [] }, "us-gaap_PurchaseObligationDueInThirdYear": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "PurchaseObligationDueInThirdYear", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": { "parentTag": "us-gaap_PurchaseObligation", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2026", "label": "Purchase Obligation, to be Paid, Year Three", "documentation": "Amount of purchase arrangement to be paid in third fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [] }, "ecd_PvpTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PvpTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pay vs Performance Disclosure", "label": "Pay vs Performance Disclosure [Table]" } } }, "auth_ref": [ "r780" ] }, "ecd_PvpTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "PvpTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pay vs Performance Disclosure, Table", "label": "Pay vs Performance [Table Text Block]" } } }, "auth_ref": [ "r780" ] }, "srt_RangeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "RangeAxis", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/RevenueNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Statistical Measurement", "label": "Statistical Measurement [Axis]", "documentation": "Information by statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median." } } }, "auth_ref": [ "r351", "r352", "r353", "r354", "r396", "r408", "r440", "r441", "r442", "r541", "r565", "r602", "r624", "r625", "r684", "r687", "r688", "r689", "r690", "r694", "r695", "r705", "r711", "r722", "r728", "r731", "r866", "r872", "r893", "r894", "r895", "r896", "r897" ] }, "srt_RangeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2023", "localname": "RangeMember", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails", "http://www.spscommerce.com/role/RevenueNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Statistical Measurement", "label": "Statistical Measurement [Domain]", "documentation": "Statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median." } } }, "auth_ref": [ "r351", "r352", "r353", "r354", "r396", "r408", "r440", "r441", "r442", "r541", "r565", "r602", "r624", "r625", "r684", "r687", "r688", "r689", "r690", "r694", "r695", "r705", "r711", "r722", "r728", "r731", "r866", "r872", "r893", "r894", "r895", "r896", "r897" ] }, "us-gaap_ReceivablesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ReceivablesAbstract", "lang": { "en-us": { "role": { "terseLabel": "Receivables [Abstract]", "label": "Receivables [Abstract]" } } }, "auth_ref": [] }, "ecd_RecoveryOfErrCompDisclosureLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RecoveryOfErrCompDisclosureLineItems", "lang": { "en-us": { "role": { "label": "Recovery of Erroneously Awarded Compensation Disclosure [Line Items]" } } }, "auth_ref": [ "r746", "r758", "r768", "r794" ] }, "spsc_RecurringRevenuesMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "RecurringRevenuesMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Recurring Revenues", "label": "Recurring Revenues [Member]", "documentation": "Recurring revenues." } } }, "auth_ref": [] }, "spsc_RecurringRevenuesTimingOfBillingsLatestPeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "RecurringRevenuesTimingOfBillingsLatestPeriod", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Latest timing of billings", "label": "Recurring Revenues Timing Of Billings Latest Period", "documentation": "Recurring revenues timing of billings latest period." } } }, "auth_ref": [] }, "us-gaap_RelatedPartyTransactionAmountsOfTransaction": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RelatedPartyTransactionAmountsOfTransaction", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foundation contributions", "label": "Related Party Transaction, Amounts of Transaction", "documentation": "Amount of transactions with related party during the financial reporting period." } } }, "auth_ref": [ "r90", "r532" ] }, "us-gaap_RelatedPartyTransactionAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RelatedPartyTransactionAxis", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Related Party Transaction [Axis]", "label": "Related Party Transaction [Axis]", "documentation": "Information by type of related party transaction." } } }, "auth_ref": [ "r532", "r533", "r889" ] }, "us-gaap_RelatedPartyTransactionDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RelatedPartyTransactionDomain", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Related Party Transaction [Domain]", "label": "Related Party Transaction [Domain]", "documentation": "Transaction between related party." } } }, "auth_ref": [] }, "us-gaap_RelatedPartyTransactionLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RelatedPartyTransactionLineItems", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Related Party Transaction [Line Items]", "label": "Related Party Transaction [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r657", "r658", "r661" ] }, "us-gaap_RelatedPartyTransactionsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RelatedPartyTransactionsAbstract", "lang": { "en-us": { "role": { "terseLabel": "Related Party Transactions [Abstract]", "label": "Related Party Transactions [Abstract]" } } }, "auth_ref": [] }, "us-gaap_RelatedPartyTransactionsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RelatedPartyTransactionsDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactions" ], "lang": { "en-us": { "role": { "terseLabel": "Related Party Transactions", "label": "Related Party Transactions Disclosure [Text Block]", "documentation": "The entire disclosure for related party transactions. Examples of related party transactions include transactions between (a) a parent company and its subsidiary; (b) subsidiaries of a common parent; (c) and entity and its principal owners; and (d) affiliates." } } }, "auth_ref": [ "r529", "r530", "r531", "r533", "r534", "r619", "r620", "r621", "r659", "r660", "r661", "r681", "r683" ] }, "us-gaap_ResearchAndDevelopmentExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ResearchAndDevelopmentExpense", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Research and development", "label": "Research and Development Expense", "documentation": "The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use." } } }, "auth_ref": [ "r93", "r458", "r898" ] }, "us-gaap_ResearchAndDevelopmentExpenseMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ResearchAndDevelopmentExpenseMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Research and development", "label": "Research and Development Expense [Member]", "documentation": "Primary financial statement caption in which the reported facts about research and development expense have been included." } } }, "auth_ref": [] }, "us-gaap_ResearchAndDevelopmentExpensePolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ResearchAndDevelopmentExpensePolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Research and Development", "label": "Research and Development Expense, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for costs it has incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process." } } }, "auth_ref": [ "r457" ] }, "ecd_RestatementDateAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RestatementDateAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Restatement Determination Date:", "label": "Restatement Determination Date [Axis]" } } }, "auth_ref": [ "r747", "r759", "r769", "r795" ] }, "ecd_RestatementDeterminationDate": { "xbrltype": "dateItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RestatementDeterminationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Restatement Determination Date", "label": "Restatement Determination Date" } } }, "auth_ref": [ "r748", "r760", "r770", "r796" ] }, "ecd_RestatementDoesNotRequireRecoveryTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "RestatementDoesNotRequireRecoveryTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Restatement does not require Recovery", "label": "Restatement Does Not Require Recovery [Text Block]" } } }, "auth_ref": [ "r755", "r767", "r777", "r803" ] }, "us-gaap_RestrictedStockMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RestrictedStockMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "verboseLabel": "RSAs", "label": "Restricted Stock [Member]", "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met." } } }, "auth_ref": [ "r46" ] }, "spsc_RestrictedStockUnitsAndDeferredStockUnitsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "RestrictedStockUnitsAndDeferredStockUnitsMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "RSUs & DSUs", "label": "Restricted Stock Units And Deferred Stock Units [Member]", "documentation": "Restricted stock units and deferred stock units member." } } }, "auth_ref": [] }, "us-gaap_RestrictedStockUnitsRSUMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RestrictedStockUnitsRSUMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "RSUs", "label": "Restricted Stock Units (RSUs) [Member]", "documentation": "Share instrument which is convertible to stock or an equivalent amount of cash, after a specified period of time or when specified performance conditions are met." } } }, "auth_ref": [] }, "us-gaap_RetainedEarningsAccumulatedDeficit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RetainedEarningsAccumulatedDeficit", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Retained earnings", "label": "Retained Earnings (Accumulated Deficit)", "documentation": "Amount of accumulated undistributed earnings (deficit)." } } }, "auth_ref": [ "r100", "r131", "r584", "r606", "r608", "r617", "r635", "r726" ] }, "us-gaap_RetainedEarningsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RetainedEarningsMember", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Retained Earnings", "label": "Retained Earnings [Member]", "documentation": "Accumulated undistributed earnings (deficit)." } } }, "auth_ref": [ "r186", "r227", "r228", "r229", "r231", "r237", "r239", "r324", "r325", "r449", "r450", "r451", "r475", "r476", "r493", "r495", "r496", "r498", "r501", "r603", "r605", "r622", "r901" ] }, "us-gaap_RevenueFromContractWithCustomerAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueFromContractWithCustomerAbstract", "lang": { "en-us": { "role": { "terseLabel": "Revenue from Contract with Customer [Abstract]", "label": "Revenue from Contract with Customer [Abstract]" } } }, "auth_ref": [] }, "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueFromContractWithCustomerExcludingAssessedTax", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_GrossProfit", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Revenues", "label": "Revenue from Contract with Customer, Excluding Assessed Tax", "documentation": "Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise." } } }, "auth_ref": [ "r265", "r266", "r275", "r278", "r279", "r283", "r284", "r285", "r390", "r391", "r567" ] }, "us-gaap_RevenueFromContractWithCustomerTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueFromContractWithCustomerTextBlock", "presentation": [ "http://www.spscommerce.com/role/Revenue" ], "lang": { "en-us": { "role": { "terseLabel": "Revenue", "label": "Revenue from Contract with Customer [Text Block]", "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts." } } }, "auth_ref": [ "r167", "r382", "r383", "r384", "r385", "r386", "r387", "r388", "r389", "r394" ] }, "spsc_RevenueRecognitionLineItems": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "RevenueRecognitionLineItems", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Revenue Recognition [Line Items]", "label": "Revenue Recognition [Line Items]", "documentation": "Revenue recognition." } } }, "auth_ref": [] }, "us-gaap_RevenueRecognitionPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RevenueRecognitionPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Revenue Recognition", "label": "Revenue [Policy Text Block]", "documentation": "Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources." } } }, "auth_ref": [ "r655", "r696", "r700" ] }, "spsc_RevenueRecognitionTable": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "RevenueRecognitionTable", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Revenue Recognition [Table]", "label": "Revenue Recognition [Table]", "documentation": "Revenue Recognition." } } }, "auth_ref": [] }, "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Right-of-use assets obtained in exchange for operating lease liabilities", "label": "Right-of-Use Asset Obtained in Exchange for Operating Lease Liability", "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability." } } }, "auth_ref": [ "r524", "r725" ] }, "ecd_Rule10b51ArrAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "Rule10b51ArrAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Rule 10b5-1 Arrangement Adopted", "label": "Rule 10b5-1 Arrangement Adopted [Flag]" } } }, "auth_ref": [ "r812" ] }, "ecd_Rule10b51ArrTrmntdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "Rule10b51ArrTrmntdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Rule 10b5-1 Arrangement Terminated", "label": "Rule 10b5-1 Arrangement Terminated [Flag]" } } }, "auth_ref": [ "r812" ] }, "us-gaap_SaleOfStockNameOfTransactionDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SaleOfStockNameOfTransactionDomain", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Sale of Stock", "label": "Sale of Stock [Domain]", "documentation": "Sale of the entity's stock, including, but not limited to, initial public offering (IPO) and private placement." } } }, "auth_ref": [] }, "us-gaap_SalesRevenueNetMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SalesRevenueNetMember", "presentation": [ "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Revenue Benchmark", "label": "Revenue Benchmark [Member]", "documentation": "Revenue from sale of product and rendering of service and other sources of income, when it serves as benchmark in concentration of risk calculation." } } }, "auth_ref": [ "r285", "r820" ] }, "spsc_ScheduleOfAccountingPoliciesLineItems": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfAccountingPoliciesLineItems", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Accounting Policies [Line Items]", "label": "Schedule Of Accounting Policies [Line Items]", "documentation": "Schedule of accounting policies." } } }, "auth_ref": [] }, "spsc_ScheduleOfAccountingPoliciesTable": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfAccountingPoliciesTable", "presentation": [ "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofPropertyandEquipmentDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Accounting Policies [Table]", "label": "Schedule Of Accounting Policies [Table]", "documentation": "Schedule Of Accounting Policies [Table]" } } }, "auth_ref": [] }, "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock", "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share", "label": "Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table Text Block]", "documentation": "Tabular disclosure of securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) in the future that were not included in the computation of diluted EPS because to do so would increase EPS amounts or decrease loss per share amounts for the period presented, by antidilutive securities." } } }, "auth_ref": [ "r46" ] }, "us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfAvailableForSaleSecuritiesLineItems", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Financial Instruments [Line Items]", "label": "Debt Securities, Available-for-Sale [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r292", "r293", "r294", "r295", "r296", "r297", "r298", "r299", "r300", "r301", "r302", "r303" ] }, "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTable", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Business Acquisitions By Acquisition [Table]", "label": "Schedule of Business Acquisitions, by Acquisition [Table]", "documentation": "Schedule reflecting each material business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities." } } }, "auth_ref": [ "r79", "r80", "r485" ] }, "us-gaap_ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Cash Equivalents and Investments", "label": "Cash, Cash Equivalents and Investments [Table Text Block]", "documentation": "Tabular disclosure of the components of cash, cash equivalents, and investments." } } }, "auth_ref": [] }, "us-gaap_ScheduleOfCollaborativeArrangementsAndNoncollaborativeArrangementTransactionsTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfCollaborativeArrangementsAndNoncollaborativeArrangementTransactionsTable", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative [Table]", "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Table]", "documentation": "Disclosure of information about collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations." } } }, "auth_ref": [ "r488" ] }, "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Provision for Income Taxes", "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]", "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years." } } }, "auth_ref": [ "r137" ] }, "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Significant Components of Deferred Tax Assets (Liabilities)", "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]", "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets." } } }, "auth_ref": [ "r136" ] }, "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/NetIncomePerShareTables" ], "lang": { "en-us": { "role": { "terseLabel": "Components of Computation of Basic and Diluted Net Income Per Share", "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]", "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations." } } }, "auth_ref": [ "r843" ] }, "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Income Tax Expense Differed from Amounts Computed by applying U.S. Federal Income Tax Rate to Pretax Income", "label": "Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]", "documentation": "Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations." } } }, "auth_ref": [ "r135" ] }, "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Employee Service Share Based Compensation Allocation Of Recognized Period Costs [Table]", "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table]", "documentation": "Disclosure of information about amount recognized for award under share-based payment arrangement. Includes, but is not limited to, amount expensed in statement of income or comprehensive income, amount capitalized in statement of financial position, and corresponding reporting line item in financial statements." } } }, "auth_ref": [ "r72" ] }, "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-Based Compensation Expense", "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]", "documentation": "Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement." } } }, "auth_ref": [ "r72" ] }, "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfFiniteLivedIntangibleAssetsTable", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Finite Lived Intangible Assets [Table]", "label": "Schedule of Finite-Lived Intangible Assets [Table]", "documentation": "Schedule of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r59", "r60", "r568" ] }, "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables" ], "lang": { "en-us": { "role": { "terseLabel": "Intangible Assets", "label": "Schedule of Finite-Lived Intangible Assets [Table Text Block]", "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment." } } }, "auth_ref": [ "r59", "r60" ] }, "us-gaap_ScheduleOfGoodwillTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfGoodwillTextBlock", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Activity in Goodwill", "label": "Schedule of Goodwill [Table Text Block]", "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule." } } }, "auth_ref": [ "r710", "r855", "r856", "r857", "r858", "r859", "r860", "r861", "r862", "r863", "r864", "r865" ] }, "us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfIndefiniteLivedIntangibleAssetsTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Estimated Useful Lives of Intangible Assets", "label": "Schedule of Indefinite-Lived Intangible Assets [Table Text Block]", "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance and exist in perpetuity, by either major class or business segment." } } }, "auth_ref": [ "r27", "r124" ] }, "us-gaap_ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/OtherIncomeandExpenseTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Other Income (Expense), Net", "label": "Schedule of Other Nonoperating Income (Expense) [Table Text Block]", "documentation": "Tabular disclosure of the components of non-operating income or non-operating expense that may include amounts earned from dividends, interest on securities, gains (losses) on securities sold, equity earnings of unconsolidated affiliates, net gain (loss) on sales of business, interest expense and other miscellaneous income or expense items." } } }, "auth_ref": [] }, "spsc_ScheduleOfPercentageOfPropertyAndEquipmentNetTableTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfPercentageOfPropertyAndEquipmentNetTableTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeographicInformationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States", "label": "Schedule Of Percentage Of Property And Equipment Net Table [Table Text Block]", "documentation": "Schedule of percentage of property and equipment net." } } }, "auth_ref": [] }, "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfPropertyPlantAndEquipmentTable", "presentation": [ "http://www.spscommerce.com/role/PropertyandEquipmentNetScheduleofPropertyandEquipmentNetDetails", "http://www.spscommerce.com/role/ScheduleofPercentageofDomesticRevenueandDomesticIncomeBeforeIncomeTaxesDetails", "http://www.spscommerce.com/role/SummaryofPercentageofPropertyandEquipmentNetLocatedatSubsidiaryandOfficeLocationsOutsideofUnitesStatesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Property Plant And Equipment [Table]", "label": "Property, Plant and Equipment [Table]", "documentation": "Disclosure of information about physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation." } } }, "auth_ref": [ "r15" ] }, "us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date", "label": "Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]", "documentation": "Tabular disclosure of the amounts recognized as of the acquisition date for each major class of assets acquired and liabilities assumed. May include but not limited to the following: (a) acquired receivables; (b) contingencies recognized at the acquisition date; and (c) the fair value of noncontrolling interests in the acquiree." } } }, "auth_ref": [ "r140" ] }, "us-gaap_ScheduleOfRelatedPartyTransactionsByRelatedPartyTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfRelatedPartyTransactionsByRelatedPartyTable", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsSummaryofContributionstoFoundationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Related Party Transactions By Related Party [Table]", "label": "Schedule of Related Party Transactions, by Related Party [Table]", "documentation": "Schedule of quantitative and qualitative information pertaining to related party transactions. Examples of related party transactions include transactions between (a) a parent company and its subsidiary; (b) subsidiaries of a common parent; (c) and entity and its principal owners; and (d) affiliates." } } }, "auth_ref": [ "r89", "r90", "r657", "r658", "r661" ] }, "us-gaap_ScheduleOfRelatedPartyTransactionsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfRelatedPartyTransactionsTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/RelatedPartyTransactionsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Contributions to Foundation", "label": "Schedule of Related Party Transactions [Table Text Block]", "documentation": "Tabular disclosure of related party transactions. Examples of related party transactions include, but are not limited to, transactions between (a) a parent company and its subsidiary; (b) subsidiaries of a common parent; (c) and entity and its principal owners and (d) affiliates." } } }, "auth_ref": [] }, "us-gaap_ScheduleOfShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGrantDateIntrinsicValueTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGrantDateIntrinsicValueTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of Additional Information Related to Stock Options", "label": "Schedule of Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Grant Date Intrinsic Value [Table Text Block]", "documentation": "Tabular disclosure of the total intrinsic value of options exercised (or share units converted), share-based liabilities paid, and the total fair value of shares vested during the year." } } }, "auth_ref": [ "r132" ] }, "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails", "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Share Based Compensation Arrangements By Share Based Payment Award [Table]", "label": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]", "documentation": "Disclosure of information about share-based payment arrangement." } } }, "auth_ref": [ "r410", "r412", "r415", "r416", "r417", "r419", "r420", "r421", "r422", "r423", "r424", "r425", "r426", "r427", "r428", "r429", "r430", "r431", "r432", "r433", "r434", "r435", "r436", "r439", "r440", "r441", "r442", "r443" ] }, "us-gaap_ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Summary of ESPP Activity", "label": "Schedule of Share-Based Compensation, Employee Stock Purchase Plan, Activity [Table Text Block]", "documentation": "Tabular disclosure of employee stock purchase plan activity." } } }, "auth_ref": [ "r71" ] }, "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Option Activity", "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]", "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value." } } }, "auth_ref": [ "r24", "r25", "r69" ] }, "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value Estimation of Common Stock, Assumptions", "label": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]", "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions." } } }, "auth_ref": [ "r134" ] }, "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted Average Fair Value Per Share of Options Granted, Assumptions", "label": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]", "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions." } } }, "auth_ref": [ "r134" ] }, "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "PSU, RSU, RSA, and DSU", "label": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]", "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year." } } }, "auth_ref": [] }, "spsc_ScheduleOfStockholdersEquityLineItems": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfStockholdersEquityLineItems", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Stockholders Equity [Line Items]", "label": "Schedule Of Stockholders Equity [Line Items]", "documentation": "Schedule of stockholders equity." } } }, "auth_ref": [] }, "spsc_ScheduleOfStockholdersEquityTable": { "xbrltype": "stringItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfStockholdersEquityTable", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule Of Stockholders Equity [Table]", "label": "Schedule Of Stockholders Equity [Table]", "documentation": "Schedule of stockholders equity." } } }, "auth_ref": [] }, "spsc_ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Supplemental Balance Sheet Information Related to Leases", "label": "Schedule Of Supplemental Balance Sheet Information Related To Leases [Table Text Block]", "documentation": "Schedule of supplemental balance sheet information related to leases." } } }, "auth_ref": [] }, "spsc_ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Supplemental Cash Flow Information Related to Leases", "label": "Schedule Of Supplemental Cash Flow Information Related To Leases [Table Text Block]", "documentation": "Schedule of supplemental cash flow information related to leases." } } }, "auth_ref": [] }, "us-gaap_ScheduleOfTreasuryStockByClassTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleOfTreasuryStockByClassTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityTables" ], "lang": { "en-us": { "role": { "terseLabel": "Class of Treasury Stock", "label": "Class of Treasury Stock [Table Text Block]", "documentation": "Tabular disclosure of treasury stock, including, but not limited to, average cost per share, description of share repurchase program, shares repurchased, shares held for each class of treasury stock." } } }, "auth_ref": [ "r63", "r64", "r65", "r66" ] }, "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "presentation": [ "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables" ], "lang": { "en-us": { "role": { "terseLabel": "Estimated Annual Amortization Expense Related to Intangible Assets", "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]", "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets." } } }, "auth_ref": [ "r60" ] }, "us-gaap_SchedulesOfConcentrationOfRiskByRiskFactorTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SchedulesOfConcentrationOfRiskByRiskFactorTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeographicInformationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Percentage of Domestic Revenue and Domestic Income Before Income Taxes", "label": "Schedules of Concentration of Risk, by Risk Factor [Table Text Block]", "documentation": "Tabular disclosure of the nature of a concentration, a benchmark to which it is compared, and the percentage that the risk is to the benchmark." } } }, "auth_ref": [ "r48", "r49", "r51", "r52", "r87", "r144" ] }, "dei_Security12bTitle": { "xbrltype": "securityTitleItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "Security12bTitle", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Title of 12(b) Security", "label": "Title of 12(b) Security", "documentation": "Title of a 12(b) registered security." } } }, "auth_ref": [ "r739" ] }, "dei_SecurityExchangeName": { "xbrltype": "edgarExchangeCodeItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "SecurityExchangeName", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Security Exchange Name", "label": "Security Exchange Name", "documentation": "Name of the Exchange on which a security is registered." } } }, "auth_ref": [ "r742" ] }, "us-gaap_SegmentReportingPolicyPolicyTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SegmentReportingPolicyPolicyTextBlock", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Segment Information", "label": "Segment Reporting, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for segment reporting." } } }, "auth_ref": [ "r269", "r270", "r271", "r272", "r273", "r274", "r284", "r704" ] }, "us-gaap_SellingAndMarketingExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SellingAndMarketingExpense", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Sales and marketing", "label": "Selling and Marketing Expense", "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services." } } }, "auth_ref": [] }, "us-gaap_SellingAndMarketingExpenseMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SellingAndMarketingExpenseMember", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Sales and marketing", "label": "Selling and Marketing Expense [Member]", "documentation": "Primary financial statement caption encompassing selling and marketing expense." } } }, "auth_ref": [ "r107" ] }, "us-gaap_SeriesOfIndividuallyImmaterialBusinessAcquisitionsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SeriesOfIndividuallyImmaterialBusinessAcquisitionsMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other Acquisition", "label": "Series of Individually Immaterial Business Acquisitions [Member]", "documentation": "Represents the aggregation and reporting of combined amounts of individually immaterial business combinations that were completed during the period." } } }, "auth_ref": [ "r80" ] }, "spsc_SetUpFeesMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "SetUpFeesMember", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Set-Up Fees", "label": "Set Up Fees [Member]", "documentation": "Set up fees." } } }, "auth_ref": [] }, "spsc_SetUpFeesRecognizedPeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "SetUpFeesRecognizedPeriod", "presentation": [ "http://www.spscommerce.com/role/RevenueNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Set up fees recognized period", "label": "Set Up Fees Recognized Period", "documentation": "Set up fees recognized period." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensation", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation", "label": "Share-Based Payment Arrangement, Noncash Expense", "documentation": "Amount of noncash expense for share-based payment arrangement." } } }, "auth_ref": [ "r13" ] }, "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardReceiptDelay": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardReceiptDelay", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Award receipt delay", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Receipt Delay", "documentation": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Receipt Delay" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Vesting period", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period", "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition." } } }, "auth_ref": [ "r723" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Forfeited (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period", "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period." } } }, "auth_ref": [ "r432" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Forfeited (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value", "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event." } } }, "auth_ref": [ "r432" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period", "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)." } } }, "auth_ref": [ "r430" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value", "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)." } } }, "auth_ref": [ "r430" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Beginning balance (in shares)", "periodEndLabel": "Ending balance (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number", "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date." } } }, "auth_ref": [ "r427", "r428" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of Shares", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Beginning balance (in dollars per share)", "periodEndLabel": "Ending balance (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value", "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options." } } }, "auth_ref": [ "r427", "r428" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted Average Grant Date Fair Value ($/share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]" } } }, "auth_ref": [] }, "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAtPeriodEnd": { "xbrltype": "sharesItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAtPeriodEnd", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Vested at period end (in shares)", "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Equity Instruments Other Than Options, Vested At Period End", "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Equity Instruments Other Than Options, Vested At Period End" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Vested and common stock issued (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period", "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period." } } }, "auth_ref": [ "r431" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Vested and common stock issued (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value", "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement." } } }, "auth_ref": [ "r431" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Dividend yield", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate", "documentation": "The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term." } } }, "auth_ref": [ "r441" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Volatility", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate", "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period." } } }, "auth_ref": [ "r440" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Risk-free interest rate", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate", "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares." } } }, "auth_ref": [ "r442" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsWeightedAverageVolatilityRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsWeightedAverageVolatilityRate", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Volatility", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Weighted Average Volatility Rate", "documentation": "Rate of weighted-average expected volatility for award under share-based payment arrangement." } } }, "auth_ref": [ "r440" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails", "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award [Line Items]", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r410", "r412", "r415", "r416", "r417", "r419", "r420", "r421", "r422", "r423", "r424", "r425", "r426", "r427", "r428", "r429", "r430", "r431", "r432", "r433", "r434", "r435", "r436", "r439", "r440", "r441", "r442", "r443" ] }, "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods": { "xbrltype": "integerItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods", "presentation": [ "http://www.spscommerce.com/role/GeneralNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of offering periods", "label": "Share-based Compensation Arrangement By Share-based Payment Award, Number Of Offering Periods", "documentation": "Share-based Compensation Arrangement By Share-based Payment Award, Number Of Offering Periods" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Shares available for grant (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Available for Grant", "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable." } } }, "auth_ref": [ "r68" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Outstanding and exercisable options (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number", "documentation": "The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan." } } }, "auth_ref": [ "r421" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted average exercise price (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price", "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan." } } }, "auth_ref": [ "r421" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationSummaryofAdditionalInformationRelatedtoStockOptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Intrinsic value of options exercised", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period, Intrinsic Value", "documentation": "Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares." } } }, "auth_ref": [ "r434" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Forfeited (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period", "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan." } } }, "auth_ref": [ "r425" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross", "documentation": "Gross number of share options (or share units) granted during the period." } } }, "auth_ref": [ "r423" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationSummaryofAdditionalInformationRelatedtoStockOptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted-average fair value per share of options granted (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value", "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology." } } }, "auth_ref": [ "r433" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationSummaryofAdditionalInformationRelatedtoStockOptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Intrinsic value of options outstanding", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value", "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding." } } }, "auth_ref": [ "r68" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Beginning balance (in shares)", "periodEndLabel": "Ending balance (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number", "documentation": "Number of options outstanding, including both vested and non-vested options." } } }, "auth_ref": [ "r419", "r420" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Options (#)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Beginning Balance (in dollars per share)", "periodEndLabel": "Ending Balance (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price", "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan." } } }, "auth_ref": [ "r419", "r420" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted Average Exercise Price ($/share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Shares issued (in shares) (less than)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Issued in Period", "documentation": "Number of shares issued under share-based payment arrangement." } } }, "auth_ref": [ "r68" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Shares purchased (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Purchased for Award", "documentation": "Number of shares purchased for issuance under share-based payment arrangement." } } }, "auth_ref": [ "r876" ] }, "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardStockPlanOfferingPeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardStockPlanOfferingPeriod", "presentation": [ "http://www.spscommerce.com/role/GeneralNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock plan offering period", "label": "Share-based Compensation Arrangement By Share-based Payment Award, Stock Plan Offering Period", "documentation": "Share-based Compensation Arrangement By Share-based Payment Award, Stock Plan Offering Period" } } }, "auth_ref": [] }, "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Amounts for shares purchased", "label": "Share Based Compensation Arrangement By Share Based Payment Award Value Purchased For Award", "documentation": "Share-based compensation arrangement by share-based payment award value purchased for award." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationPSURSURSAandDSUDetails", "http://www.spscommerce.com/role/StockBasedCompensationStockBasedCompensationExpenseDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Type", "label": "Award Type [Domain]", "documentation": "Award under share-based payment arrangement." } } }, "auth_ref": [ "r415", "r416", "r417", "r419", "r420", "r421", "r422", "r423", "r424", "r425", "r426", "r427", "r428", "r429", "r430", "r431", "r432", "r433", "r434", "r435", "r436", "r439", "r440", "r441", "r442", "r443" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Exercised (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price", "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares." } } }, "auth_ref": [ "r424" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Forfeited (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price", "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated." } } }, "auth_ref": [ "r425" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price", "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options." } } }, "auth_ref": [ "r423" ] }, "us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareBasedCompensationOptionAndIncentivePlansPolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-Based Compensation", "label": "Share-Based Payment Arrangement [Policy Text Block]", "documentation": "Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost." } } }, "auth_ref": [ "r409", "r418", "r437", "r438", "r439", "r440", "r443", "r452", "r453", "r454", "r455" ] }, "us-gaap_ShareRepurchaseProgramAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareRepurchaseProgramAxis", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share Repurchase Program", "label": "Share Repurchase Program [Axis]", "documentation": "Information by share repurchase program." } } }, "auth_ref": [] }, "us-gaap_ShareRepurchaseProgramDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShareRepurchaseProgramDomain", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share Repurchase Program", "label": "Share Repurchase Program [Domain]", "documentation": "Name of the share repurchase program." } } }, "auth_ref": [] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock options contractual term range", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Expiration Period", "documentation": "Period from grant date that an equity-based award expires, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r724" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationWeightedAverageFairValuePerShareofOptionsGrantedAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Life (in years)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term", "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r439" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted average remaining contractual life", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term", "documentation": "Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r133" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationSummaryofAdditionalInformationRelatedtoStockOptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair value of options vested", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested in Period, Fair Value", "documentation": "Fair value of options vested. Excludes equity instruments other than options, for example, but not limited to, share units, stock appreciation rights, restricted stock." } } }, "auth_ref": [ "r434" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent", "presentation": [ "http://www.spscommerce.com/role/GeneralNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Purchase price as a percentage of fair market value", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent", "documentation": "Purchase price of common stock expressed as a percentage of its fair value." } } }, "auth_ref": [] }, "us-gaap_ShortTermInvestments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "ShortTermInvestments", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Short-term investments", "label": "Short-Term Investments", "documentation": "Amount of investments including trading securities, available-for-sale securities, held-to-maturity securities, and short-term investments classified as other and current." } } }, "auth_ref": [ "r149", "r150", "r832" ] }, "us-gaap_StateAndLocalJurisdictionMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StateAndLocalJurisdictionMember", "presentation": [ "http://www.spscommerce.com/role/IncomeTaxesNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "State and Local Jurisdiction", "label": "State and Local Jurisdiction [Member]", "documentation": "Designated tax department of a state or local government entitled to levy and collect income taxes from the entity." } } }, "auth_ref": [] }, "us-gaap_StatementEquityComponentsAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementEquityComponentsAxis", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Components", "label": "Equity Components [Axis]", "documentation": "Information by component of equity." } } }, "auth_ref": [ "r23", "r36", "r186", "r212", "r213", "r214", "r227", "r228", "r229", "r231", "r237", "r239", "r263", "r324", "r325", "r379", "r449", "r450", "r451", "r475", "r476", "r493", "r494", "r495", "r496", "r497", "r498", "r501", "r510", "r511", "r512", "r513", "r514", "r515", "r528", "r603", "r604", "r605", "r622", "r677" ] }, "us-gaap_StatementLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementLineItems", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Statement [Line Items]", "label": "Statement [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r227", "r228", "r229", "r263", "r567", "r612", "r623", "r626", "r627", "r628", "r629", "r630", "r631", "r634", "r637", "r638", "r639", "r640", "r641", "r642", "r643", "r644", "r645", "r647", "r648", "r649", "r650", "r651", "r653", "r655", "r656", "r662", "r663", "r664", "r665", "r666", "r667", "r668", "r669", "r670", "r671", "r672", "r673", "r677", "r732" ] }, "us-gaap_StatementOfCashFlowsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementOfCashFlowsAbstract", "lang": { "en-us": { "role": { "terseLabel": "Statement of Cash Flows [Abstract]", "label": "Statement of Cash Flows [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StatementOfFinancialPositionAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementOfFinancialPositionAbstract", "lang": { "en-us": { "role": { "terseLabel": "Statement of Financial Position [Abstract]", "label": "Statement of Financial Position [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StatementOfStockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementOfStockholdersEquityAbstract", "lang": { "en-us": { "role": { "terseLabel": "Statement of Stockholders' Equity [Abstract]", "label": "Statement of Stockholders' Equity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StatementTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StatementTable", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Statement [Table]", "label": "Statement [Table]", "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed." } } }, "auth_ref": [ "r227", "r228", "r229", "r263", "r567", "r612", "r623", "r626", "r627", "r628", "r629", "r630", "r631", "r634", "r637", "r638", "r639", "r640", "r641", "r642", "r643", "r644", "r645", "r647", "r648", "r649", "r650", "r651", "r653", "r655", "r656", "r662", "r663", "r664", "r665", "r666", "r667", "r668", "r669", "r670", "r671", "r672", "r673", "r677", "r732" ] }, "ecd_StkPrcOrTsrEstimationMethodTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "StkPrcOrTsrEstimationMethodTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Price or TSR Estimation Method", "label": "Stock Price or TSR Estimation Method [Text Block]" } } }, "auth_ref": [ "r750", "r762", "r772", "r798" ] }, "us-gaap_StockAppreciationRightsSARSMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockAppreciationRightsSARSMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Appreciation Rights (SARs)", "label": "Stock Appreciation Rights (SARs) [Member]", "documentation": "Right to receive cash or shares equal to appreciation of predetermined number of grantor's shares during predetermined time period." } } }, "auth_ref": [] }, "us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Employee stock purchase plan (in shares)", "label": "Stock Issued During Period, Shares, Employee Stock Purchase Plans", "documentation": "Number of shares issued during the period as a result of an employee stock purchase plan." } } }, "auth_ref": [ "r23", "r97", "r98", "r131" ] }, "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Shares issued pursuant to stock awards (in shares)", "label": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture", "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP)." } } }, "auth_ref": [ "r23", "r97", "r98", "r131" ] }, "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationStockOptionActivityDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Exercised (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period", "documentation": "Number of share options (or share units) exercised during the current period." } } }, "auth_ref": [ "r23", "r97", "r98", "r131", "r424" ] }, "us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodValueEmployeeStockPurchasePlan", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Employee stock purchase plan activity", "label": "Stock Issued During Period, Value, Employee Stock Purchase Plan", "documentation": "Aggregate change in value for stock issued during the period as a result of employee stock purchase plan." } } }, "auth_ref": [ "r23", "r97", "r98", "r131" ] }, "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockIssuedDuringPeriodValueShareBasedCompensation", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Shares issued pursuant to stock awards", "label": "Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture", "documentation": "Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP)." } } }, "auth_ref": [ "r70", "r97", "r98", "r131" ] }, "us-gaap_StockRepurchaseProgramAuthorizedAmount1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockRepurchaseProgramAuthorizedAmount1", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share Value Authorized for Repurchase", "label": "Stock Repurchase Program, Authorized Amount", "documentation": "Amount of stock repurchase plan authorized." } } }, "auth_ref": [] }, "us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1", "crdr": "credit", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share Value Available for Future Repurchase", "label": "Stock Repurchase Program, Remaining Authorized Repurchase Amount", "documentation": "Amount remaining of a stock repurchase plan authorized." } } }, "auth_ref": [] }, "us-gaap_StockholdersEquity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquity", "crdr": "credit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "totalLabel": "Total stockholders\u2019 equity", "periodStartLabel": "Beginning balance", "periodEndLabel": "Ending balance", "label": "Equity, Attributable to Parent", "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest." } } }, "auth_ref": [ "r98", "r101", "r102", "r120", "r636", "r652", "r678", "r679", "r726", "r738", "r837", "r853", "r884", "r901" ] }, "us-gaap_StockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquityAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Stockholders' equity", "label": "Equity, Attributable to Parent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StockholdersEquityNoteDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "StockholdersEquityNoteDisclosureTextBlock", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Stockholders' Equity", "label": "Equity [Text Block]", "documentation": "The entire disclosure for equity." } } }, "auth_ref": [ "r130", "r224", "r365", "r367", "r368", "r369", "r370", "r371", "r372", "r373", "r374", "r375", "r376", "r378", "r379", "r500", "r680", "r682", "r691" ] }, "us-gaap_SubsidiarySaleOfStockAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SubsidiarySaleOfStockAxis", "presentation": [ "http://www.spscommerce.com/role/StockBasedCompensationFairValueEstimationofCommonStockAssumptionsDetails", "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails", "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Sale of Stock", "label": "Sale of Stock [Axis]", "documentation": "Information by type of sale of the entity's stock." } } }, "auth_ref": [] }, "us-gaap_SupplementalCashFlowInformationAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "SupplementalCashFlowInformationAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Supplemental Cash Flow Information [Abstract]", "label": "Supplemental Cash Flow Information [Abstract]" } } }, "auth_ref": [] }, "spsc_TIEKinetixHoldingBVMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "TIEKinetixHoldingBVMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsNarrativeDetails", "http://www.spscommerce.com/role/BusinessAcquisitionsScheduleofEstimatedFairValueofPurchasedIntangibleAssetsandtheirEstimatedUsefulLivesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "TIE Kinetix Holding B.V.", "label": "TIE Kinetix Holding B.V. [Member]", "documentation": "TIE Kinetix Holding B.V." } } }, "auth_ref": [] }, "ecd_TabularListTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TabularListTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Tabular List, Table", "label": "Tabular List [Table Text Block]" } } }, "auth_ref": [ "r791" ] }, "us-gaap_TechnologyBasedIntangibleAssetsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TechnologyBasedIntangibleAssetsMember", "presentation": [ "http://www.spscommerce.com/role/BusinessAcquisitionsEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedatAcquisitionDateDetails", "http://www.spscommerce.com/role/GeneralSummaryofEstimatedUsefulLivesofIntangibleAssetsDetails", "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetIntangibleAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Developed technology", "verboseLabel": "Developed technology", "label": "Technology-Based Intangible Assets [Member]", "documentation": "Technology-based intangible assets, including, but not limited to, patented technology, unpatented technology, and developed technology rights." } } }, "auth_ref": [ "r28" ] }, "ecd_TotalShareholderRtnAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TotalShareholderRtnAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Total Shareholder Return Amount", "label": "Total Shareholder Return Amount" } } }, "auth_ref": [ "r783" ] }, "ecd_TotalShareholderRtnVsPeerGroupTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TotalShareholderRtnVsPeerGroupTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Total Shareholder Return Vs Peer Group", "label": "Total Shareholder Return Vs Peer Group [Text Block]" } } }, "auth_ref": [ "r790" ] }, "us-gaap_TradeAndOtherAccountsReceivablePolicy": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TradeAndOtherAccountsReceivablePolicy", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts Receivable", "label": "Accounts Receivable [Policy Text Block]", "documentation": "Disclosure of accounting policy for accounts receivable." } } }, "auth_ref": [ "r153", "r154", "r155", "r288", "r289", "r291" ] }, "ecd_TradingArrAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TradingArrAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Trading Arrangement:", "label": "Trading Arrangement [Axis]" } } }, "auth_ref": [ "r811" ] }, "ecd_TradingArrByIndTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TradingArrByIndTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Trading Arrangements, by Individual", "label": "Trading Arrangements, by Individual [Table]" } } }, "auth_ref": [ "r813" ] }, "dei_TradingSymbol": { "xbrltype": "tradingSymbolItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "TradingSymbol", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Trading Symbol", "label": "Trading Symbol", "documentation": "Trading symbol of an instrument as listed on an exchange." } } }, "auth_ref": [] }, "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain", "presentation": [ "http://www.spscommerce.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Financial Instruments [Domain]", "label": "Financial Instruments [Domain]", "documentation": "Instrument or contract that imposes a contractual obligation to deliver cash or another financial instrument or to exchange other financial instruments on potentially unfavorable terms and conveys a contractual right to receive cash or another financial instrument or to exchange other financial instruments on potentially favorable terms." } } }, "auth_ref": [ "r292", "r293", "r294", "r295", "r296", "r297", "r298", "r299", "r300", "r301", "r302", "r303", "r304", "r305", "r306", "r307", "r308", "r309", "r310", "r311", "r312", "r313", "r314", "r315", "r316", "r317", "r318", "r319", "r320", "r321", "r364", "r377", "r499", "r535", "r536", "r537", "r538", "r539", "r540", "r541", "r542", "r543", "r544", "r545", "r546", "r547", "r548", "r549", "r550", "r551", "r552", "r553", "r554", "r555", "r556", "r557", "r558", "r559", "r560", "r561", "r562", "r563", "r564", "r591", "r824", "r825", "r826", "r827", "r828", "r829", "r830", "r849", "r850", "r851", "r852" ] }, "ecd_TrdArrAdoptionDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrAdoptionDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Adoption Date", "label": "Trading Arrangement Adoption Date" } } }, "auth_ref": [ "r814" ] }, "ecd_TrdArrDuration": { "xbrltype": "durationItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrDuration", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Arrangement Duration", "label": "Trading Arrangement Duration" } } }, "auth_ref": [ "r815" ] }, "ecd_TrdArrIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Trading Arrangement, Individual Name" } } }, "auth_ref": [ "r813" ] }, "ecd_TrdArrIndTitle": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrIndTitle", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Title", "label": "Trading Arrangement, Individual Title" } } }, "auth_ref": [ "r813" ] }, "ecd_TrdArrSecuritiesAggAvailAmt": { "xbrltype": "sharesItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrSecuritiesAggAvailAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Available", "label": "Trading Arrangement, Securities Aggregate Available Amount" } } }, "auth_ref": [ "r816" ] }, "ecd_TrdArrTerminationDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "TrdArrTerminationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Termination Date", "label": "Trading Arrangement Termination Date" } } }, "auth_ref": [ "r814" ] }, "us-gaap_TreasuryStockAcquiredAverageCostPerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockAcquiredAverageCostPerShare", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyYearDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Average price per repurchased share (in dollars per share)", "label": "Shares Acquired, Average Cost Per Share", "documentation": "Total cost of shares repurchased divided by the total number of shares repurchased." } } }, "auth_ref": [ "r63" ] }, "us-gaap_TreasuryStockCommonMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockCommonMember", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Treasury Stock", "label": "Treasury Stock, Common [Member]", "documentation": "Previously issued common shares repurchased by the issuing entity and held in treasury." } } }, "auth_ref": [ "r63" ] }, "us-gaap_TreasuryStockCommonShares": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockCommonShares", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheetsParenthetical", "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Treasury stock, shares (in shares)", "periodStartLabel": "Beginning balance (in shares)", "periodEndLabel": "Ending balance (in shares)", "label": "Treasury Stock, Common, Shares", "documentation": "Number of previously issued common shares repurchased by the issuing entity and held in treasury." } } }, "auth_ref": [ "r63" ] }, "us-gaap_TreasuryStockCommonValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockCommonValue", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedBalanceSheets", "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Treasury Stock, at cost; 2,151,098 shares", "terseLabel": "Share Value Repurchased", "label": "Treasury Stock, Common, Value", "documentation": "Amount allocated to previously issued common shares repurchased by the issuing entity and held in treasury." } } }, "auth_ref": [ "r37", "r63", "r66" ] }, "us-gaap_TreasuryStockSharesAcquired": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockSharesAcquired", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyYearDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Repurchases of common stock (in shares)", "terseLabel": "Number of shares repurchased (in shares)", "label": "Treasury Stock, Shares, Acquired", "documentation": "Number of shares that have been repurchased during the period and are being held in treasury." } } }, "auth_ref": [ "r23", "r98", "r131" ] }, "spsc_TreasuryStockUnusedAndExpiredRepurchaseValue": { "xbrltype": "monetaryItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "TreasuryStockUnusedAndExpiredRepurchaseValue", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Unused & Expired Share Repurchase Value", "label": "Treasury Stock, Unused and Expired Repurchase Value", "documentation": "Treasury Stock, Unused and Expired Repurchase Value" } } }, "auth_ref": [] }, "us-gaap_TreasuryStockValueAcquiredCostMethod": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TreasuryStockValueAcquiredCostMethod", "crdr": "debit", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofStockholdersEquity", "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyYearDetails" ], "lang": { "en-us": { "role": { "negatedLabel": "Repurchases of common stock", "terseLabel": "Shares repurchased cost", "label": "Treasury Stock, Value, Acquired, Cost Method", "documentation": "Equity impact of the cost of common and preferred stock that were repurchased during the period. Recorded using the cost method." } } }, "auth_ref": [ "r23", "r63", "r131" ] }, "spsc_TwoThousandAndNineteenStockRepurchaseProgramMember": { "xbrltype": "domainItemType", "nsuri": "http://www.spscommerce.com/20231231", "localname": "TwoThousandAndNineteenStockRepurchaseProgramMember", "presentation": [ "http://www.spscommerce.com/role/StockholdersEquityShareRepurchasePlanDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2019 Program", "label": "Two Thousand And Nineteen Stock Repurchase Program [Member]", "documentation": "Two thousand and nineteen stock repurchase program." } } }, "auth_ref": [] }, "us-gaap_TypeOfArrangementAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "TypeOfArrangementAxis", "presentation": [ "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative", "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Axis]", "documentation": "Information by collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations." } } }, "auth_ref": [ "r488" ] }, "ecd_UndrlygSecurityMktPriceChngPct": { "xbrltype": "pureItemType", "nsuri": "http://xbrl.sec.gov/ecd/2023", "localname": "UndrlygSecurityMktPriceChngPct", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Underlying Security Market Price Change", "label": "Underlying Security Market Price Change, Percent" } } }, "auth_ref": [ "r810" ] }, "us-gaap_UseOfEstimates": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "UseOfEstimates", "presentation": [ "http://www.spscommerce.com/role/GeneralPolicies" ], "lang": { "en-us": { "role": { "terseLabel": "Use of Estimates", "label": "Use of Estimates, Policy [Policy Text Block]", "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles." } } }, "auth_ref": [ "r53", "r54", "r55", "r157", "r158", "r161", "r162" ] }, "us-gaap_VariableLeaseCost": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "VariableLeaseCost", "crdr": "debit", "calculation": { "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails": { "parentTag": "us-gaap_LeaseCost", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.spscommerce.com/role/CommitmentsandContingenciesComponentsofLeaseExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Variable lease cost", "label": "Variable Lease, Cost", "documentation": "Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases." } } }, "auth_ref": [ "r522", "r725" ] }, "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfDilutedSharesOutstanding", "calculation": { "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Diluted (in shares)", "totalLabel": "Weighted average common shares outstanding, diluted (in shares)", "label": "Weighted Average Number of Shares Outstanding, Diluted", "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period." } } }, "auth_ref": [ "r242", "r258" ] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfSharesOutstandingAbstract", "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "verboseLabel": "Weighted average common shares used to compute net income per share", "label": "Weighted Average Number of Shares Outstanding, Diluted [Abstract]" } } }, "auth_ref": [] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2023", "localname": "WeightedAverageNumberOfSharesOutstandingBasic", "calculation": { "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.spscommerce.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.spscommerce.com/role/NetIncomePerShareComponentsandComputationofBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Basic (in shares)", "verboseLabel": "Weighted average common shares outstanding, basic (in shares)", "label": "Weighted Average Number of Shares Outstanding, Basic", "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period." } } }, "auth_ref": [ "r241", "r258" ] } } } }, "std_ref": { "r0": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "05", "Paragraph": "4", "SubTopic": "10", "Topic": "360", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482338/360-10-05-4" }, "r1": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "25", "Paragraph": "1", "SubTopic": "20", "Topic": "940", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481913/940-20-25-1" }, "r2": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "25", "Paragraph": "16", "SubTopic": "10", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479405/805-10-25-16" }, "r3": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "7", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479637/805-30-30-7" }, "r4": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "30", "Paragraph": "8", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479637/805-30-30-8" }, "r5": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "SubTopic": "230", "Topic": "830", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481877/830-230-45-1" }, "r6": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A" }, "r7": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A" }, "r8": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "12", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-12" }, "r9": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "14", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-14" }, "r10": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "15", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-15" }, "r11": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "15", "Subparagraph": "(f)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15" }, "r12": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "SubTopic": "10", "Topic": "810", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-20" }, "r13": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r14": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r15": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "360", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1" }, "r16": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "825", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-1" }, "r17": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "30", "Topic": "350", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r18": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "405", "Topic": "942", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481047/942-405-50-1" }, "r19": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "SubTopic": "30", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1" }, "r20": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Subparagraph": "(e)", "SubTopic": "10", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15" }, "r21": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Subparagraph": "(c)(3)", "SubTopic": "10", "Topic": "810", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A" }, "r22": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Subparagraph": "(c),(3)", "SubTopic": "10", "Topic": "810", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A" }, "r23": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "SubTopic": "10", "Topic": "505", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-2" }, "r24": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r25": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r26": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2A", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2A" }, "r27": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b),(d)", "SubTopic": "30", "Topic": "350", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-3" }, "r28": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13", "SubTopic": "20", "Topic": "805", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-13" }, "r29": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "60", "Paragraph": "1", "SubTopic": "10", "Topic": "820", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482053/820-10-60-1" }, "r30": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.19(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r31": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.19-26)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r32": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.20)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r33": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.21)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r34": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.24)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r35": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.25)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r36": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.29-31)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r37": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "210", "SubTopic": "10", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02.30)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r38": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "220", "SubTopic": "10", "Section": "45", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14" }, "r39": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "220", "SubTopic": "10", "Section": "45", "Paragraph": "14A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14A" }, "r40": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "220", "SubTopic": "10", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-5" }, "r41": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "13", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13" }, "r42": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "15", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15" }, "r43": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-4" }, "r44": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-1" }, "r45": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-2" }, "r46": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "260", "SubTopic": "10", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r47": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "260", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-2" }, "r48": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "16", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-16" }, "r49": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "18", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-18" }, "r50": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "18", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-18" }, "r51": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "20", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-20" }, "r52": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-21" }, "r53": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-4" }, "r54": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-8" }, "r55": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "275", "SubTopic": "10", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-9" }, "r56": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "310", "Publisher": "FASB", "URI": "https://asc.fasb.org//310/tableOfContent" }, "r57": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "310", "SubTopic": "10", "Section": "50", "Paragraph": "11B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-11B" }, "r58": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482686/350-30-45-2" }, "r59": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r60": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r61": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "350", "SubTopic": "30", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r62": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "360", "SubTopic": "10", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1" }, "r63": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "30", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481549/505-30-45-1" }, "r64": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "30", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481520/505-30-50-2" }, "r65": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "30", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481520/505-30-50-3" }, "r66": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "505", "SubTopic": "30", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481520/505-30-50-4" }, "r67": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "715", "SubTopic": "70", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480794/715-70-50-1" }, "r68": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r69": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r70": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r71": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r72": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r73": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "20", "Section": "55", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-12" }, "r74": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "20", "Section": "55", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-13" }, "r75": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "740", "SubTopic": "10", "Section": "45", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-6" }, "r76": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "740", "SubTopic": "10", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-3" }, "r77": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "740", "SubTopic": "10", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-8" }, "r78": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "05", "Paragraph": "4", "Subparagraph": "(a)-(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479515/805-10-05-4" }, "r79": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2" }, "r80": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-3" }, "r81": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "10", "Section": "55", "Paragraph": "37", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479303/805-10-55-37" }, "r82": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-1" }, "r83": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "50", "Paragraph": "4A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-4A" }, "r84": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "805", "SubTopic": "20", "Section": "55", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-20" }, "r85": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "815", "SubTopic": "10", "Section": "50", "Paragraph": "4A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4A" }, "r86": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "815", "SubTopic": "10", "Section": "50", "Paragraph": "4B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4B" }, "r87": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "825", "SubTopic": "10", "Section": "50", "Paragraph": "20", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-20" }, "r88": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "825", "SubTopic": "10", "Section": "50", "Paragraph": "21", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-21" }, "r89": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "850", "SubTopic": "10", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-1" }, "r90": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "850", "SubTopic": "10", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-3" }, "r91": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "942", "SubTopic": "210", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03.17)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r92": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "942", "SubTopic": "825", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480981/942-825-50-1" }, "r93": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "985", "SubTopic": "20", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481283/985-20-50-1" }, "r94": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "205", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//205/tableOfContent" }, "r95": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(26)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r96": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(26)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r97": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(28))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r98": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(29))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r99": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r100": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r101": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r102": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(31))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r103": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(32))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r104": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-11" }, "r105": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(10))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r106": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r107": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r108": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.1,2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r109": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r110": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r111": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.7(a),(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r112": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r113": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.8)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r114": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03.9)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r115": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13" }, "r116": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "13", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13" }, "r117": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24" }, "r118": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-25" }, "r119": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r120": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 4.E)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480418/310-10-S99-2" }, "r121": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//350/tableOfContent" }, "r122": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r123": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r124": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r125": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "360", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//360/tableOfContent" }, "r126": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1" }, "r127": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 5.CC)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480091/360-10-S99-2" }, "r128": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "440", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//440/tableOfContent" }, "r129": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "12A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481573/470-10-45-12A" }, "r130": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//505/tableOfContent" }, "r131": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.3-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1" }, "r132": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "718", "SubTopic": "10", "Subparagraph": "(d)(2)", "Name": "Accounting Standards Codification", "Paragraph": "2", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r133": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "718", "SubTopic": "10", "Subparagraph": "(e)(1)", "Name": "Accounting Standards Codification", "Paragraph": "2", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r134": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "718", "SubTopic": "10", "Subparagraph": "(f)(2)", "Name": "Accounting Standards Codification", "Paragraph": "2", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r135": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Paragraph": "12", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12" }, "r136": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Paragraph": "2", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2" }, "r137": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Paragraph": "9", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r138": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r139": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "805", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//805/tableOfContent" }, "r140": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Paragraph": "1", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-1" }, "r141": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-38" }, "r142": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "810", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//810/tableOfContent" }, "r143": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-19" }, "r144": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-21" }, "r145": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(10))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r146": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r147": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(15)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r148": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r149": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r150": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r151": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r152": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r153": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11B", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "310", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-11B" }, "r154": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Subparagraph": "(d)", "SubTopic": "10", "Topic": "310", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-15" }, "r155": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "SubTopic": "10", "Topic": "310", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-6" }, "r156": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Subparagraph": "(a)", "SubTopic": "20", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482659/740-20-45-2" }, "r157": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1" }, "r158": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1" }, "r159": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1" }, "r160": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "SubTopic": "360", "Topic": "958", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480321/958-360-50-1" }, "r161": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-11" }, "r162": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-12" }, "r163": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "SubTopic": "360", "Topic": "958", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480321/958-360-50-6" }, "r164": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "SubTopic": "360", "Topic": "958", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480321/958-360-50-7" }, "r165": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r166": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h))", "SubTopic": "10", "Topic": "235", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r167": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Topic": "606", "Publisher": "FASB", "URI": "https://asc.fasb.org//606/tableOfContent" }, "r168": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(a)", "Publisher": "SEC" }, "r169": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(1)", "Publisher": "SEC" }, "r170": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(2)", "Publisher": "SEC" }, "r171": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(3)", "Publisher": "SEC" }, "r172": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(4)", "Publisher": "SEC" }, "r173": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(5)", "Publisher": "SEC" }, "r174": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(1)(i)", "Publisher": "SEC" }, "r175": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(1)(ii)", "Publisher": "SEC" }, "r176": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(2)(i)", "Publisher": "SEC" }, "r177": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(2)(ii)", "Publisher": "SEC" }, "r178": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(2)(iii)", "Publisher": "SEC" }, "r179": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Subsection": "Instruction 5", "Publisher": "SEC" }, "r180": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1406", "Paragraph": "(a)", "Subparagraph": "(1)", "Publisher": "SEC" }, "r181": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1406", "Paragraph": "(a)", "Subparagraph": "(2)", "Publisher": "SEC" }, "r182": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1406", "Paragraph": "(a)", "Subparagraph": "(3)", "Publisher": "SEC" }, "r183": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1406", "Paragraph": "(a)", "Subparagraph": "(4)", "Publisher": "SEC" }, "r184": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1406", "Paragraph": "(a)", "Subparagraph": "(5)", "Publisher": "SEC" }, "r185": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1406", "Paragraph": "(c)", "Publisher": "SEC" }, "r186": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "105", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479343/105-10-65-6" }, "r187": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-7" }, "r188": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1" }, "r189": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-5" }, "r190": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r191": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(13))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r192": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(14))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r193": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r194": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(16))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r195": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r196": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(18))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r197": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(3)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r198": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r199": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r200": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r201": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r202": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A" }, "r203": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A" }, "r204": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-11" }, "r205": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "17A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-17A" }, "r206": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A" }, "r207": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A" }, "r208": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A" }, "r209": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B" }, "r210": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B" }, "r211": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-1" }, "r212": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4" }, "r213": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5" }, "r214": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6" }, "r215": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(24))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r216": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r217": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r218": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r219": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2" }, "r220": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-11" }, "r221": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "12", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12" }, "r222": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24" }, "r223": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-8" }, "r224": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(e)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r225": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r226": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r227": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23" }, "r228": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24" }, "r229": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5" }, "r230": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1" }, "r231": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1" }, "r232": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11" }, "r233": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11" }, "r234": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-3" }, "r235": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-4" }, "r236": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7" }, "r237": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7" }, "r238": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-8" }, "r239": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-9" }, "r240": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//260/tableOfContent" }, "r241": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-10" }, "r242": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "16", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-16" }, "r243": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-2" }, "r244": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-22" }, "r245": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-23" }, "r246": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "26", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-26" }, "r247": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-28A" }, "r248": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "44", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-44" }, "r249": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "48", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-48" }, "r250": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "48", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-48" }, "r251": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "51", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-51" }, "r252": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "52", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-52" }, "r253": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "53", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-53" }, "r254": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "54", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-54" }, "r255": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "60B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B" }, "r256": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "60B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B" }, "r257": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-7" }, "r258": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r259": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r260": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-2" }, "r261": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-3" }, "r262": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-15" }, "r263": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "272", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483014/272-10-45-1" }, "r264": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r265": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r266": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r267": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r268": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22" }, "r269": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-29" }, "r270": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-29" }, "r271": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-29" }, "r272": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-29" }, "r273": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-29" }, "r274": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-29" }, "r275": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r276": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r277": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r278": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r279": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r280": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r281": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r282": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32" }, "r283": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "40", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-40" }, "r284": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41" }, "r285": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "42", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-42" }, "r286": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481990/310-10-45-2" }, "r287": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481990/310-10-45-9" }, "r288": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-1" }, "r289": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-2" }, "r290": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-4" }, "r291": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481569/310-20-50-1" }, "r292": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r293": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r294": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(aa)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r295": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(aaa)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r296": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r297": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r298": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r299": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3" }, "r300": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3" }, "r301": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3" }, "r302": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3" }, "r303": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3" }, "r304": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r305": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r306": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(aaa)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r307": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r308": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r309": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r310": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r311": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r312": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r313": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5" }, "r314": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5A" }, "r315": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5A" }, "r316": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5A" }, "r317": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B" }, "r318": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B" }, "r319": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B" }, "r320": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B" }, "r321": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B" }, "r322": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-9" }, "r323": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "323", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3" }, "r324": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "4", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-4" }, "r325": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "5", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-5" }, "r326": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479344/326-20-45-1" }, "r327": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-11" }, "r328": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13" }, "r329": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13" }, "r330": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13" }, "r331": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-14" }, "r332": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "16", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-16" }, "r333": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-5" }, "r334": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479130/326-30-45-1" }, "r335": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-4" }, "r336": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-7" }, "r337": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-9" }, "r338": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//350-20/tableOfContent" }, "r339": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482598/350-20-45-1" }, "r340": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r341": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r342": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-2" }, "r343": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r344": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1" }, "r345": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r346": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2" }, "r347": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3" }, "r348": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1" }, "r349": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "440", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482648/440-10-50-4" }, "r350": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "440", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482648/440-10-50-4" }, "r351": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-4" }, "r352": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9" }, "r353": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1" }, "r354": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1" }, "r355": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r356": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r357": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iv))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r358": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r359": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r360": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r361": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r362": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iv))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r363": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B" }, "r364": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1I", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I" }, "r365": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r366": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r367": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r368": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r369": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r370": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r371": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14" }, "r372": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14" }, "r373": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14" }, "r374": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "16", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-16" }, "r375": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r376": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r377": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r378": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18" }, "r379": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.3-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1" }, "r380": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-1" }, "r381": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-2" }, "r382": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10" }, "r383": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r384": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r385": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r386": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r387": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12" }, "r388": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13" }, "r389": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-15" }, "r390": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-4" }, "r391": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5" }, "r392": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-8" }, "r393": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-8" }, "r394": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-9" }, "r395": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//715/tableOfContent" }, "r396": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r397": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r398": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r399": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(l)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r400": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(o)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r401": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(p)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r402": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(q)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r403": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(r)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r404": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(r)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r405": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480126/715-20-S99-2" }, "r406": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "60", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480266/715-60-50-3" }, "r407": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "70", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480794/715-70-50-1" }, "r408": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-5" }, "r409": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//718/tableOfContent" }, "r410": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "1D", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-1D" }, "r411": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-2" }, "r412": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-3" }, "r413": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480454/718-10-45-1" }, "r414": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r415": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r416": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r417": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r418": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r419": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r420": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r421": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r422": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r423": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r424": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r425": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r426": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r427": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r428": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r429": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r430": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r431": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r432": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r433": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r434": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r435": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r436": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r437": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r438": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r439": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r440": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r441": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r442": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r443": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(v)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r444": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r445": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r446": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r447": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r448": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(l)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r449": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "15", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15" }, "r450": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "15", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15" }, "r451": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "15", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15" }, "r452": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 14.C.Q3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1" }, "r453": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 14.D.1.Q5)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1" }, "r454": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 14.D.2.Q6)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1" }, "r455": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 14.D.3.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1" }, "r456": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 14.F)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1" }, "r457": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "730", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "05", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483044/730-10-05-1" }, "r458": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "730", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482916/730-10-50-1" }, "r459": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//740/tableOfContent" }, "r460": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-25" }, "r461": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-28" }, "r462": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-4" }, "r463": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-6" }, "r464": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-10" }, "r465": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12" }, "r466": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-14" }, "r467": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "17", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-17" }, "r468": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-19" }, "r469": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2" }, "r470": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2" }, "r471": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2" }, "r472": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-20" }, "r473": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-21" }, "r474": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r475": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8" }, "r476": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(d)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8" }, "r477": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB TOPIC 6.I.5.Q1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r478": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB TOPIC 6.I.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r479": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.Fact.1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r480": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.Fact.2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r481": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.Fact.4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r482": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 11.C)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-2" }, "r483": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "270", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482526/740-270-50-1" }, "r484": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482603/740-30-50-2" }, "r485": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5" }, "r486": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5" }, "r487": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1" }, "r488": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "808", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479402/808-10-50-1" }, "r489": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25" }, "r490": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25" }, "r491": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3" }, "r492": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3" }, "r493": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r494": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r495": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r496": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r497": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r498": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(i)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6" }, "r499": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480237/815-40-50-5" }, "r500": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480237/815-40-50-6" }, "r501": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r502": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r503": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r504": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28" }, "r505": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//830/tableOfContent" }, "r506": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481839/830-10-45-17" }, "r507": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482014/830-20-35-1" }, "r508": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481956/830-20-45-1" }, "r509": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481926/830-20-50-1" }, "r510": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-17" }, "r511": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r512": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r513": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r514": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20" }, "r515": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481674/830-30-50-1" }, "r516": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1" }, "r517": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1" }, "r518": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-5" }, "r519": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-1" }, "r520": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r521": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r522": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r523": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r524": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r525": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r526": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r527": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-6" }, "r528": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "848", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(a)(3)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483550/848-10-65-2" }, "r529": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "850", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//850/tableOfContent" }, "r530": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "850", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-1" }, "r531": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "850", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-1" }, "r532": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "850", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-1" }, "r533": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "850", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-1" }, "r534": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "850", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-6" }, "r535": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r536": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r537": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r538": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r539": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r540": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r541": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r542": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r543": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r544": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r545": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r546": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r547": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r548": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481444/860-30-45-1" }, "r549": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481420/860-30-50-7" }, "r550": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3" }, "r551": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3" }, "r552": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3" }, "r553": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(4)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3" }, "r554": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r555": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r556": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r557": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r558": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(5)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r559": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(6)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r560": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r561": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r562": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r563": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r564": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4" }, "r565": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "910", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482546/910-10-50-6" }, "r566": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "912", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482312/912-310-45-11" }, "r567": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "924", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 11.L)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479941/924-10-S99-1" }, "r568": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "926", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483154/926-20-50-5" }, "r569": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "928", "SubTopic": "340", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483147/928-340-50-1" }, "r570": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(10)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r571": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1" }, "r572": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(26))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r573": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(27))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1" }, "r574": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-05(b)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479557/942-235-S99-1" }, "r575": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-05(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479557/942-235-S99-1" }, "r576": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480842/942-360-50-1" }, "r577": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r578": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(12))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r579": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r580": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r581": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(21))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r582": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r583": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r584": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r585": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r586": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(8)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r587": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(8)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r588": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1" }, "r589": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r590": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(18))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r591": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r592": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r593": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r594": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(3)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r595": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1" }, "r596": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column A))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r597": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r598": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r599": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column D))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r600": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column E))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r601": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column F))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2" }, "r602": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-7A" }, "r603": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r604": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r605": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r606": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r607": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r608": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(h)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2" }, "r609": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "825", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479383/944-825-50-1B" }, "r610": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480424/946-10-50-1" }, "r611": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480424/946-10-50-2" }, "r612": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r613": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(f)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r614": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(f)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r615": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(f)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r616": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(h)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3" }, "r617": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-11" }, "r618": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-13" }, "r619": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-2" }, "r620": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-5" }, "r621": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-6" }, "r622": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4" }, "r623": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480555/946-210-45-4" }, "r624": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6" }, "r625": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6" }, "r626": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r627": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r628": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r629": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r630": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(13)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r631": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(13)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r632": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(14))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r633": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r634": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(16)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r635": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r636": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r637": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r638": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(2)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r639": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r640": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r641": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r642": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r643": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r644": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r645": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r646": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r647": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r648": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r649": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r650": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1" }, "r651": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.6-05(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2" }, "r652": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.6-05(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2" }, "r653": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-3" }, "r654": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-7" }, "r655": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r656": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r657": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(c)(2)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r658": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(c)(2)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r659": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r660": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r661": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(g)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r662": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r663": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r664": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r665": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r666": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r667": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r668": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r669": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r670": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r671": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r672": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r673": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r674": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r675": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1" }, "r676": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(1)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r677": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r678": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r679": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r680": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2" }, "r681": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2" }, "r682": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2" }, "r683": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2" }, "r684": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1" }, "r685": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "12", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-12" }, "r686": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "19", "Subparagraph": "(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-19" }, "r687": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2" }, "r688": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3" }, "r689": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3" }, "r690": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6" }, "r691": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "505", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481004/946-505-50-6" }, "r692": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "954", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481027/954-310-50-2" }, "r693": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "954", "SubTopic": "440", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480327/954-440-50-1" }, "r694": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "976", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482856/976-310-50-1" }, "r695": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "978", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482707/978-310-50-1" }, "r696": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)", "SubTopic": "10", "Topic": "235", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4" }, "r697": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13H", "Subparagraph": "(a)", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H" }, "r698": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1" }, "r699": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1" }, "r700": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4" }, "r701": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "52", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-52" }, "r702": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30" }, "r703": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31" }, "r704": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "47", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482785/280-10-55-47" }, "r705": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481933/310-10-55-12A" }, "r706": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479294/326-20-55-12" }, "r707": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479294/326-20-55-12" }, "r708": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479294/326-20-55-12" }, "r709": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479081/326-30-55-8" }, "r710": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482548/350-20-55-24" }, "r711": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13" }, "r712": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r713": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r714": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r715": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r716": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r717": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r718": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91" }, "r719": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480482/715-20-55-17" }, "r720": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11" }, "r721": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-6" }, "r722": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480547/715-80-55-8" }, "r723": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r724": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r725": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "53", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479589/842-20-55-53" }, "r726": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481372/852-10-55-10" }, "r727": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479401/944-30-55-2" }, "r728": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "29F", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-29F" }, "r729": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1" }, "r730": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6" }, "r731": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480493/946-210-55-1" }, "r732": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480833/946-310-45-1" }, "r733": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1" }, "r734": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2" }, "r735": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3" }, "r736": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6" }, "r737": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-10" }, "r738": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-12" }, "r739": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b" }, "r740": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b-2" }, "r741": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b-23" }, "r742": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "d1-1" }, "r743": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 10-K", "Number": "249", "Section": "310" }, "r744": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Number": "249", "Section": "220", "Subsection": "f" }, "r745": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "16", "Subsection": "J", "Paragraph": "a" }, "r746": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1" }, "r747": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i" }, "r748": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "A" }, "r749": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "B" }, "r750": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "C" }, "r751": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "D" }, "r752": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "E" }, "r753": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "ii" }, "r754": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "iii" }, "r755": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "2" }, "r756": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Subsection": "F", "Paragraph": "1", "Subparagraph": "ii", "Section": "6" }, "r757": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Number": "249", "Section": "240", "Subsection": "f" }, "r758": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a" }, "r759": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1" }, "r760": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "i" }, "r761": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "ii" }, "r762": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iii" }, "r763": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iv" }, "r764": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "v" }, "r765": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "2" }, "r766": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "3" }, "r767": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "b" }, "r768": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a" }, "r769": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1" }, "r770": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "i" }, "r771": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "ii" }, "r772": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iii" }, "r773": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iv" }, "r774": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "v" }, "r775": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "2" }, "r776": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "3" }, "r777": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "b" }, "r778": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Forms 10-K, 10-Q, 20-F", "Number": "240", "Section": "13", "Subsection": "a-1" }, "r779": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v" }, "r780": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "1" }, "r781": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "ii" }, "r782": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii" }, "r783": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iv" }, "r784": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "vi" }, "r785": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "3" }, "r786": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "4" }, "r787": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "i" }, "r788": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "ii" }, "r789": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "iii" }, "r790": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "iv" }, "r791": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "6" }, "r792": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "6", "Subparagraph": "i" }, "r793": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w" }, "r794": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1" }, "r795": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i" }, "r796": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "A" }, "r797": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "B" }, "r798": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "C" }, "r799": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "D" }, "r800": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "E" }, "r801": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "ii" }, "r802": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "iii" }, "r803": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "2" }, "r804": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "1" }, "r805": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2" }, "r806": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "A" }, "r807": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "C" }, "r808": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "D" }, "r809": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "E" }, "r810": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "F" }, "r811": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a" }, "r812": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "1" }, "r813": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "A" }, "r814": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "B" }, "r815": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "C" }, "r816": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "D" }, "r817": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "b", "Paragraph": "1" }, "r818": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-T", "Number": "232", "Section": "405" }, "r819": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Securities Act", "Number": "230", "Section": "405" }, "r820": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "SubTopic": "10", "Topic": "275", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-18" }, "r821": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "SubTopic": "825", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479383/944-825-50-1B" }, "r822": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4H", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-4H" }, "r823": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r824": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(a)", "Publisher": "SEC" }, "r825": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(1)", "Publisher": "SEC" }, "r826": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(2)", "Publisher": "SEC" }, "r827": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(b)", "Subparagraph": "(3)", "Publisher": "SEC" }, "r828": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(2)(i)", "Publisher": "SEC" }, "r829": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(2)(ii)", "Publisher": "SEC" }, "r830": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "(c)", "Subparagraph": "(2)(iii)", "Publisher": "SEC" }, "r831": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r832": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1" }, "r833": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4" }, "r834": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5" }, "r835": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6" }, "r836": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28" }, "r837": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r838": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1" }, "r839": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(S-X 210.12-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-3" }, "r840": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23" }, "r841": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24" }, "r842": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5" }, "r843": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1" }, "r844": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-18" }, "r845": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481830/320-10-45-1" }, "r846": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481830/320-10-45-11" }, "r847": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r848": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2" }, "r849": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-9" }, "r850": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3" }, "r851": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3" }, "r852": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3" }, "r853": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "323", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3" }, "r854": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13" }, "r855": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r856": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r857": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r858": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r859": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r860": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r861": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r862": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r863": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1" }, "r864": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1A" }, "r865": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-2" }, "r866": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "410", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10" }, "r867": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org//450/tableOfContent" }, "r868": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9" }, "r869": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1" }, "r870": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r871": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A" }, "r872": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B" }, "r873": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10" }, "r874": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5" }, "r875": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1" }, "r876": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(l)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2" }, "r877": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12" }, "r878": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2" }, "r879": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-6" }, "r880": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9" }, "r881": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r882": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.Fact.4)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1" }, "r883": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1" }, "r884": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28" }, "r885": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "830", "SubTopic": "230", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481877/830-230-45-1" }, "r886": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-3" }, "r887": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4" }, "r888": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-6" }, "r889": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "850", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-3" }, "r890": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7" }, "r891": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7" }, "r892": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r893": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r894": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3" }, "r895": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r896": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r897": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4" }, "r898": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "912", "SubTopic": "730", "Name": "Accounting Standards Codification", "Section": "25", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147482517/912-730-25-1" }, "r899": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147479432/944-30-50-2B" }, "r900": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4" }, "r901": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" }, "r902": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3" } } } ZIP 117 0001092699-24-000012-xbrl.zip IDEA: XBRL DOCUMENT begin 644 0001092699-24-000012-xbrl.zip M4$L#!!0 ( -V85%C3IQ-_O < $8E < 83(P,C-?,3!K97AH:6)I M=&5X,S$Q8V5O+FAT;>U:;6_;.!+^?K^"E^"Z*6 [MF/GQ4D#N&F*&ELDBR2+ M[GY:4.+()B*)6I*RX_OU]Y"47Q(GK;O9MM[@ L2VQ.%PAO/PF2&EDY'-TM.3 M$7%Q^J^3?]?K[)V*RXQRRV)-W))@I9'YD'T29&Y9O5Y)G:EBJN5P9%F[V>ZP M3TK?RC$/[5;:E$YG>DYVP_7)KA_D)%)B>GHBY)A)\69+'NU%1^*0]KOM/=$Y MHDZT'XDN)=05=!#S _JCM86N$ ]]C)VF]&8KDWE]1&[\7J=;V..)%';4:S6; M_]GRF[HA+9,@:.1_"39B$'\Y M"?8?0$\JZU&Z[X'Z]D>8^9)_R#CS\ZO;@;O!V?] MF\'E!?OEUZOK7_L7-^SFDEV?G_E[>\TVNWS/;CZ_ ML_[9S;K^?G/O.H]Z-ZBQLQ$7$QG?8AFD$# U%I.V,IDR.^+VU7;W\'CMH!5< M""RP>DJ)[74[LS#*7""$O?K>_@]SM-68.?']1[\_+>W#1M=-PX"-^)B8IK&D M":C)CJ1A_3PO>H6!"KI!=, *7.>/YE)6YU27! M ^0;GWH0-\XR7&F)R"8\QBW-5"8MLRK(K0CD%),Q7$^=2,9O">,NZ32X)V , MADQ]WL(83B"6&GD*8CFZPQ)!FDU&,AXQ4[J/1?\)::J4. _\<"!)+9(X@.[PL@EH#_B".9KW4 M+O,$%,*MA!Z9QVDIH!/ 68I@#:"3.IVR G%WD'503M,%)BLXF =# _9".L4U M)U&F$ 0%=#BAS/>GIB;$4M2-3$SE%[14!JK.0;B[F:P&U;6EL!F9L:L6/M2 M\-;9.+S=W O.J^W#=NO@V%2(JHH"1Q$J220N?=@&C&OR $' 9922"R0CH#)* MI1DY<2>6@1X=1;IK(4V<*E.BGR-.K=* E$*KF 1N&[8#8 @"TD+TS^_B$<^' MQ/K@I*LRA41KC]=;W1UZ[;NVNB)SVN4%ZPY3+C:DJY!UJ5 M21=@J55L[!HEF!.V&)5*X;>IIHR,%))KZ1R0(=_[') [3:5Q.=BO2^,3MF=( M90@&88/J.Q4<"(_+E#MBAUO>B$4N1X]0&2P7-/@5D1,$]Z(_B6=P[68!.=H< M(.\'LKV/X[49:P7.ZW/=VJC&2AA+X5B=&Y5S1^K< .BNK,3-(==BAB;@6_)( MIM).77I_;%BWMCSP/*;"LK@GNE26^MQQ5SE4E+H IHTO1^)8:>$-\ 7JD')4 M&2F@C18JW)IQ(BB^ WRQMF0!^GXQ (XW!\ S)CX?\[3T=.7"2TF"$E&.$1CS M2*DWKR;6H-]P^7CUYP&+CJ!.$VK,2)7V:0O621!\+DVN@$Z^O.=AT:PT]VN0 MPDS 'H\W-\!+P)S8',S-2#-$B;0-VHGUMT8G#]O)^;/ M$\5LB=06).4X;_KQS=BKT58BK]BCAB.$1 M8N,"'0W->>U)=%8E*KH 8J@D:Z$ ,,C^ILP $,R2=Z;*)X^>G[VHY+YY.Z(^ M._Y'X5 ]'?6 "LV+1\>-9GA\;#7^Q6SDJKGAFW:M6&WK'#:. MFD\W-QNM)]O^)K6[WN1@-F;&%#Q_L[6W->M0(:?7+NY8Z_YC8@>FE=P5 M<-@=)[&9I_^8B7OX//H;3=9?FH_YVQC?8%*\QIZT&"]>:YHD)>S\CN+2[7G9 M92@%5TAI ^SU^6:G.I0!A=+;-?]" MT(.7;OX*#'<]ES^2*I;?^RF4\4_3>N'0>$PK;P(M%KI/!LU%%QYAM9=VM#,Q,F-F;RYH=&WM6FUOV[86_KY?P258EP*V8SG. MFY,&<#,',]J;%$EVMWVZH"3*)B*)&DG9\7[]?0XIOR1V6G=96R]8@2:1>'AX M7AX]YY#2Z=!FZ=GI4/#X[+O3[^MU]I.*RDSDED5:<"MB5AJ9#]BOL3!WK%ZO MI,Y5,=%R,+2LU6RUV:]*W\D1]^-6VE2<3?6<[OKKTUVWR&FHXLG9:2Q'3,9O MMN01/X[:0?L@W#]NMUM!>!0<'O.H>7@D]@X/CL+#_P5;F IQ/\?822K>;&4R MKP\%K=]I[Q?V9"QC.^P$S>8/6T[N[#11N<5B&I/]GU['LB:N!U!F5=$)6M!D MQ;VM\U0.\H[S;\NKFHI'*E6ZL]UT_TYHI)[P3*:3SH^W,A.&78HQNU89SW^L M&9Z;NA%:)E[0R#\%;,0B[G+L[3^$GE3F8NI/T"(G>K_]W'_;OV5[0:/UT(/U M;(\0>:&_D?'GO>O;_D7_O'O;O[ID'WZYOOFE>WG+;J_83>_]F_K5;^][O[/N^>VZ_GYQ[]HKO>O7V#N9A4*G$ZA,CK<2KB 8+NLJ1]>F(% M$W*%XH(5N,P9SR>LS*TN!3Q N7&5!WGC+,.5ELALPB/[%, 9+IJYL80T2B*1&F8)8CNFP)!::C8"@3W_CD0 M%"R1.9),>)DGM0;\01S#>F%+0W8QY(4UTBB3"$ ("J@Q2UGG#T1-T.6I&ILIBB]%@-IK.98 MB---;S>LK"V S4R-6;+VI>"MO7%XNWV0G%?;1ZW@\,14B*J: J((E202ERYM M?<:U< !!PF68"DHD$T!EF$HS)'$2RT"/1)%T'4L3I*'FP4(*%R,_'<(8$%?5G-$U!\^@Q1@FUWPBC?&,PVCYL M- \I#C\)@RT!TN5*VJ>Q5*-J&_'2K#^%REXH@(MJ)5](5:FA .PTDL9Q'J1$ M[O10HSQGRT7&U2+E#FA5)9V#I5:Q,0U*,"=L,2J5L=NEFC(T,I9<2W) ^GKO M:D!.FDI#-=@]E\85;,>0R@@8A/VIFU1P(#PJ4T[$#K><$?-:CAF^,UAL:/!7 M*$@0W(OY(GX&UVX6D,/- ?*!)]N'.%Z;L9;@O#[7K8UJ/ DC&1.K<^P'.9$Z M-P ZM96X.> ZGJ()^)8\E*FT$RKOJY:E9\L!SV'*/Q8/1!?:4E<[[BN'BE(7 MP+1Q[4@4*1T[ UR#.A YNHP4T,:(*.B9(1$TWQZ^>+9D ?I^,0".-@? 4R;N MC7A:.KJB](HD08LH1TB,6='JS;J)->C77Z[N_AQ@,1'4:7R/&:K2/FW!.@6" MSZ0%-=#)I_<\+)RVYNX9%#X2L,?AC19X"9B+-P=S4]+TV5Q&!>V\J];-C:R$ MWF=0)15T%46EIMPO5,\56C-E+*;2&25TF0B*_BA1?*%ZYXDI"4 ,$GLD71F. M#9-PAP9TGN!.@[Q=K[U50VYFK0;1GP.]B%U=B;0-VHGMK\Q.'_>3LR=)\;31Z0V)RGBS$68SOF*@/89O<=2%SLSC:.3M4J; M6;EW-Z RRZ2U0GRD(H0*#06-QQ+V.24[ #,(V!#!XS?UT],G4/Q12ICOGK8R MC]Q!P^M_-UQ?KLQW4[1H:!DEH$:;7-HN1U( &U6IGFU\QH+?4>WU+9NKOJ[9 M=.>=TU.AST)>1&?5HF(*((9.LN8; (/J;\H, $&4 MG#-5/5EY?O:BBOOF[8BZJ.&)!F_4D';AJ [ <*@\)?('^ 7>_I8FH?$9;_:LVT15PR'P)W0=H4YY841G M^L<)J+M(^:0C_0V^@O%ZB^%8_8IQA>(B=/8D1;K M16M$J7^2USBJPUPQI6BG>J\ MAMY^SHPF1Q:.=*I.]_77<^*C\;\0H<:V;?)J.SAHGK2:-??ET*.O<_X*9'<= MZZ\H*HL?"!7*N/=N'7^\/!)+GPS-.<&5C>9\"@]!#*5=GO*)KXRJG_Z#IUWW MH=7_ 5!+ P04 " #=F%18,!.V/_D$ #Z%P 'P &$R,#(S7S$P:V5X M:&EB:71E>#,R,6-E;V-F;RYH=&WM6&UOVS80_KY?<7.P-@$L19+EQ)'= *[C MH$8R.XC+]^1\JRT[IILZUMLJ%!8%@^WOO#AR?VYGJ1 M'_?FE*3'/_5^=APX$4FYH%Q#(BG1-(52,7X%;U*JWH/CK%8-1+&4[&JN(?"" M$-X(^9Y=DTJNF<[I<6VGMU\]]_:MD]Y,I,OC7LJN@:4O&JQ#VDXW4!675SI*+W/ZHK%@W)E3XS\*VX7NWK!4SR/? M\WYIV'7'O4QPCO+^'5_/(7IY-Y,GDKD?@=>N[$[<.'9CG]PV/5;;>_)!]V/H7\RN9@. M3_Y3M8Z' XN/(^\ )JQL[D[?GP'?0'4R,)/"_X>WN \10S MBUH'Q;??O^$GDQMQ2 3G--%,<+AA>@YZ3J'/>4ERN*2%D!I0[72"P.NBJ"!\:9_\[AYD0EJC!88H4J"8= HG M-*&+&94&OUZWY3<-0;>:0!1D+,<%ZUABFI22:89)$Y["\#:9$WY%;01,*1,W M_IN5*9X#,*>28HQW ZK2J.-IVK4E1B$5@HNFU0^#.:,96D=OFEU3F&092ZBT M/C?R4\8)3QC6II:C+RNNDFY:_[,EH$BS#)^+4JJ28&>UL+9,-?"W0BA,")4_ MM95M&4@J"G.NW340KQIEL+AR'!,Y(YPJ9W*;TR7T$VTD!HLF+X)IMSO=!\.R M(&F*QZB3TTQ'[? CH#J/B%3?K9/X_MX_+$O0<=NF#%.L_FJ'9&6>8\\1 [G! MZ1J[DOY1,DG-?&&;7??/;^V2/4 D^.W==&_=R@W2URA?]=,_:H78R:.NP=#_ MH)O!D^PFX[@[%\2V"&E1$]1,\5?;G;K5A$GL=2&I,EUM&C')FW(*R'YZOBUH*G$FPG6]:HI M5N/HJM/:\TKL6M&^3K=E8<<]\NX7>ZY_K^PKF=VW(5=A8V44EOI%H]6H%5;H MB(+B%OP/IU4#F*WBB.+[[R$_Q&R>[82'764_8?"J?_)F-#B#P>3\?#2.U\A9 M%>,S>7HFRP?69@4L@SO//42H@!(Y2Z%.]C]3N\&8];+4>I^D;U>DKU ML!8CIM%5\H4*M6V%/CD/F5?5W4(RY+0"28VNY:*2[_VK2NY;1OI!>#\([TN$ M=S;Z]>7P\OP=C(?G\63\@^\^7[HS9EZV<&X9TUP)_I3H;GT-]OB?]P\QDO2*9W)DLAE=4<2>/:.)/P*O;KWF+U[5UT(95]7(DES M8C;%UNWUAB7M0>IM5,@,>;+4VRI?N/!>?59W[_OVSO\O4$L#!!0 ( -V8 M5%@.9 83(P,C-?>&5X,3 Q.&YO;BUE;7!L;WEE960N M:'1M[5QM4^,X$OY^OT('<[-W54F(\T["4,5!=HJJY:6 NZW]="7;"E%A6QY) M3O#]^NV6["0."9/, (%-9JH@1"]N=3_=_;0E^VBHP^#X:,BH?_RWH[^7R^1, M>$G((DT\R:AF/DD4C^[)[SY3#Z1%7?&?C- MYJ'+VHS]S]F#H=#=CE$Z#=B7O9!'Y2'#ZW?;M5CWQMS7PZY3K?YCK]!/LT== MI@&_C[I&6F@="%A;UNR)0,CN?M7\ZV%+>4!#'J3=7^YXR!2Y9&-R(T(:_5)2 M-%)EQ20?V(Z*_Y]U';RX^7.<20/S!#QBN716I/[CD+M<$Z=:<3I'!S@@7]23 MIG_1(YOSRM% 5_AR)?7EV6^Q?7OUW] MT>^3L_.;_NG=U0TNXKI_>7MR=WYU26[_H&-#)A=/O29:3O52JVUVK0'1F0K-BA&Q33ZLE??F].=T6ZU MH@2@3<)_ON M /_WLG8MXH7-F76ZM?B1.*#*&1OCE/.JM5K=6V[@6J6-%LF_,X$E__(-7<', MV.4:KN:MX!PGOH@AG.<8?EW_;"P4X?-^L].;"W\9-'[J/^.J_<& >9J/V(=SUI]' MQLZ=U[+2>1@RGP-/#U(22RXDT<(X-SF)HH0&Y((QC?Q=#,BM%M[#4 2@1;7, M]P\,_UC$N N,I#59\//$:-FHM_2QQ8H[XQ)\#/1%K9XDTQ0ZR8V[7&ZX7* 2 MB6EJF"2/B$?5L(2V_%1OED 8$C-)_'PI[-%CX!<#1,&0$6](N80.2D1D/!1$ M#6F \WH,0@OYU')PAN6L_OW:[E2$(=>:94M4[]Z&:J$1;=?5B@JL M5@[KS1\I*=JU2NNP]>(E!<1:I]IXB9)B+EL0_%VOM-O?3QR0?]X^UM?KR. 3 MGVLR 7\Q02]/S;-+M4LD"W*DR6_O9ZV?"($TA@&JL,*_H%7!GC&+%-4^_U-N5";LR85*+=7J$JJ+?F]BS+3F=C.Y:?]SNU6JNW.746=>,T*F;W M]DZ0. '_I8J1),9=U$^'3JG6K.)NFP<^#4"PJ #W\Y+ '(VDRFRT&8 0'[XB M \HE&=$@83@.&\V@L@OS0O\QE;["Z>($QT.51ST/ZC.3'L9<#\FO)[?_)B>W MIY_WG5:UUW8Z!"Z,\YCILSF1"](H154Z[=YD_RN<[O6JF;W>[ 2GV1(,A/FL M*-2'L>1P5=PMI+@W*)=.7UA^)LXE53[]1KX&PL5=9BH?F%XDZG=$VT'Z]2#] M%6$)* ,LYUO$RFP$HZE9 %_81C23*P"9A.J=S39KL_XCDQY7N7/B]KYU3?8- M39)9:]:-U2(_WOGH!['W?YG2F 8&(I&9C7D$/"0(\.R\RJT54(4))D7;, HL M<\ 5Y"$" Z0&C)C4@1T'7$+/$)B$!LX?&BFS$(I)"S:+ 1%0E$FPXD"(L(, RFP]X1&AR9UUIB(Z8Z"Q[ M@1+\\WZCW8-@Z;,!DW+2DD1T# G(W>^\%VN3[UO"7"BIU1_!C%% MVKL0,! H4&)D&%OU]S9@2%9<--C4I@:@0SBB40;[ M*,EQ8O*56B5A5.[]AO'03:1BYOELC!6/N"7,W@%AO9N:HRVZD@$7AZ%+7RJ0/^0V'4)=)8)$ M/QVR]!FIV9]#.=T*O&=E%SSDH6Q"5Y<&8YJJO9=\]\%283;C,L]B#(_ 34[' MF3@^.0&CF'G0"0.$*T98$0DB;0UEMEHF]4P*R2QQ%60A1&@&OU H;2""H"V MJT3<1&<8BH0NX CFX#HMRI%MZ?)FRQ.@7I')5A!)&6IL3LYEZ9V-%BM/[%UCWS7:4EBJB0O(RV%X2 M?$4/P46+E?#()'P)-,!R=W0J%GF%ZE9.RV0C- @;^53:&>=@M@Z\7K3.!9W_ MQ,WVY77)&Y"5MSTW#E>N5.W5USTX?MBI'%;7>K?,G!8=^\C^VB\SR#PW/[-5 MQ6-:>\^>@'KA -!9R?_QY4V0(FJ-'KF$W-:' EBDX%J3I]X+IXEODQ#,E]J< MLOK/:V"KI+:,_0E02P,$% @ W9A46"KWHEM(! NS< M !\ !A,C R,U]X97@R,3$M6QI0DY->O;&-"0DBXR#9C M82X\&%G2>?6<(UE"ZDY-R'O=*5#6^ZW[>[5*!C*(0Q"&! JH 49BC6)"?C+0 MUZ1:G3_5E]%,X61J2--KMLA/J:[QAF;I!@V'7EY.MY[==^MI)5U?LEFOR_"& M(#NJH-=@8W9XT/S,]L>MQO[>(6T"?&K!X9Y_"/L^_;=1L5GMXUD>;68MVQ%,96IFSF[&M6QDI)!NY,E7*2>$E M:D/DF(R&(^L]80@J@%UR(8(:&<6^1H94(>@5'2]I['4-]3GD4GRI&*BJ5<1I MI*&=?^DPU!&GLS:*U*XT4R>D:F+=R)?&R+"];T7<@#(84#YOKK3ELN0'!ZMY MF9,9:XYA>:9RL7=[)EZYH"(DO63^R*F8+OY@WP1NJ6SC@ MKY8X,K;S)5*1[V8*BOP9*]0, X-26.5KHN17&VFC5ZI(*IJ8]6&G==#YKB94 MX'WZPY.>=\D']9]O[_[OJG( G-Y2!8]D.43QPT[CD]=9O2X/C.0XUD998RD9FAFY M-,PQR M]6TVY3P5E=#?AZUH49]*VC>[+U[3OMF[/@(QFVD"HG>S MQ/]H\"^ M@N2MC5/!-/E2^\*N@Z%Z M:JM!=U^BSD!@K$D?1#(+S-^&'>3H^F+&V>.E_))>H?2M&S&/8R-'$NY)2;? M^M;17<0L&5!#29_+F)6 "ZCO=<"G,1\CY^G_^7/.Y1A;-'W)_.5.;$VOV:' MY^KIH;W_ %!+ P04 " #=F%18]?RM[LL" !I" '@ &$R,#(S7WAE M>#(S,2UC;VYS96YT;V9A=61I+FAT;Q2.ZJNVM+]^OGO%%08; /0_3#R<[YL1];MJ]1;LIB&N7 MT^F[Z+UEL2\R698@#$L4< ,I6VH4R4**X@VTNTYD(=5DSZY_1]6-E?$2B\UD_R>6H-D% MK-FE++G8[VLNM*5!8=88:OP-Q(GHU>JZY4M^"A30\6](?[W-,4:JIC=P'C)^ MG&M"E075>S+/%Z!>.\43*7355S)CWT4*"Z"#U$N8HR96U&FS95Q@PCXGB5P* M4W7=*:IR)[&_)?W\W?]+VW\T[6M@29NYD,B[11 M0]]V@X-:WX)']\"N%P2ATX!==SSR1IWL^@_D82L[@3OJOE,HM\/:3A!Z+8FQ M-_3]CM"0C+;D[+"50V(==+)KWV')BS/<)E"I_D'5-'*IJ#!4-RI$6F^F4XC5 MDJL-[:!^O8?Z;(TF)RN]@.2NWE7Y98$-)D/!18*\>%#7C%W-KFBIE26H!/K4 MH,F@YJ"7L<84N4+JB.I#Y1"RC-SC"@3H&HS56 GR2:&,D@63*U#W0C6TJ:$' M3TYIR=6*3KD_V8G7]C9V>S?YK*-Y7-.0H! M?$'=HONL5K0T_(ULDIUV?[*6]Y_&A=18[9&)@H)73;OS6':H6!HCRXF]A?"8 M!F=I=B'/O*_MV3SUA_5?C#]02P,$% @ W9A46 ",0W\_$0 3V8 !X M !A,C R,U]X97AE>#DW8V]M<&5NMSVS82_WY_!2Z= MMO:,I%BV\[+3S+B).^>9-LG9[O7ZZ08B00EGBF !THKNK[]] 'Q(E*QF*B%+E+U*HSS\C'__O(Q3?)R M8N+EJY>QOA4Z_NZ1?IK$+]1!]/1XK(Z.)XEZ'K^03Y[&\8NGA^,GSX^>_VO\ M"%Z%Q_D=5RQ3]=VCN)R0J8S,++ M_"./L3Z2M%,8K##YR?@01BK4AV(H4SW-3FA]CWBH\'AD4F-/OCJ@_T[QFV$B MYSI=GGQ[K>?*B;=J(2[-7&;?#IS,W- IJQ-^T.G_** 1)J%?%TS_,Q@GU9D* MZQD?XB+.__FWB^\OKL6+9VWZ=Z,\ KXK^YE(OWI_)5Z_^^FG\\O7YP-Q\?;U MZ-XMX?+\[S]?7)Z_P76\/W][=79]\>ZMN#Q__>X?YY>_BO?O?KQX_>N]6]5Y MDJBHT+=*O(L*,U%6' Y0?8\VKH0HUUD,5)\N[=/1?]Q!_Z-7US,EOC?2QL(DXHVVL$/& M.K%7P.???/7\\/#@-"SASR=O&WN)Z,]'VJ-7Q)WQZ3XRCFR.F<^5C138G"P: MW0,. L&YS):]X.%,.B%CDZ/#+V;:B4OU6PG2&"-;6V&?BL3,Y+ZTH)!!1&7):I$N.#-\,QRB_*ZI6*2JL+#1/++!;G'Z*9 MS*9*G$4%/C)^<70\$+A-$%7%L#']%_#F$OJP 8.M?$;[H9U#,=_K-5NOSE_W M@9O"JFF9$G5.Y-;,RW0JV7XHJXC> 7%8YCFHH)R P+^5+I:_B:O"1#?B)VEO M5-%S9C/%O>!WJEV!J9@K@*O@?-U(7)63?T/$@ 8%.:TS(2-812RS2(F%+F8D M\1!RSAV;&;#6;! 'HLQ!TB69]#*GC._\%OX<""6C&6@#V'F%Z@'J0D&CF\DT M%1,ES 1B6=YI T)0E#;#GW F[](&\+%T)H,]7Y)HY$6Z9.V3*1>)CA[5D,23!(!'_3_S"WDCR02Y8CZ5= 6PE;&P2H$H!OOCIZ?BJN98K" M2>:Y*)0*_I*CYOY[P8KP/AB1D3C+EB)6:!)TYHWW7,:JL0&>S6&;$G@N)?,R M 3E"+4.[ =])RB<5FAT0.!V7,G7KN?Y]TJDW"A:KB2E]5ZA>B_P9."&P\B@K MEPK<5:$8"?SL\B_F"@8!828_Z4FT-8G@1U3P97/XS&H0_SIVLO@#JDD6X?-6Y<;ZD2F)HI&)/?2JJP/05"[< /0G2DO2+!S(ALQK XE M'O <@0)J7;TZO]K=7A\(8[U?-F4: M(UUE6E#<48^(471%K69V,9D+,/6!>+(;]!UPP^*C.?EKG"%5"3+LCB?_*,_> M>HEQNG^7$&HER],ORKZ+?UL)QOJCYQ3)MA46'Q@_.W65+*%C2XR=@W*J*IPT M2:(C99U8S QJ"\JN)+OAM\(_$*;K, I>9)$0\IF)3_F?RN%X+]D/KS1SY-$G MX=S3T9-==C@WCCS?B568U-VJ4P2PAT?T-NQP 2E?<[/OT/^= M5'D'D_!%_[>C/'?D<;TQ!P-VUN"SJ"Q9H"8Y&9M&IF4@RF&'N ;47 Z6/1 M!;#JF0&!K!$4"&!F"OY 0X<,D6GD\2T14V$&ADJLF=-,.D.GX8?*-LO'-U\] M@1QV3^XWZ9N#3<+4JEJJK $3$"8P6!A,!7%2E&>%W[JG"5NS(\\8_%G,=,0( MT=8-:4(PL)P7I^0S]R;[+9]':YI+G17POXA]]9]'\*2WTD[^4!:=*\<))A8R M_+1ASEB^E,-R_$;8M)%_@4+!FO,4ABL=OP&OY[(RSZO197?R1&AXDS;@*EE= M"#-3L"X^DY.V8$-#HA\>'GG8G)4;A]JHW<2#U!FQ;;-&XFS;]R)30!B:R(EJ M\*H1VG;FE[0$3&<]7^&I%$>MN'IUOJ4AY(O6?B*MW6;@^Z"UVI%B1&LA"WPQ MM1)%#PL3-L._0<9NP5548!$[Z(Y5:Q7(EJ M^R")C!Q0V6QFE2*13%5!@)C#R' )8NB$GL]5K,'L484+HJ,XN(*J*LWT6CU:IL'S3#1%%)D)AJ222:Z JSALB< M R.U.25ZH!+5RL M$_O"187L[KG]5=!6EF ,+9!/4ES(&Y]Z2H:!=.(KSN%WQ@^"Y",&PG$O%TD: M#1!N5H,MX:%XP.'-[]$CFB>DX<087'UIBT%HS3&6GB'8!QS$5&*8U%@G]N)[ M;,.U2/FBQOU4XRN/21X?O#CKC^8VJ0I:=8&-[AG%V>"_2A2MV&>MA"#6K6/X MV;34G'QW]Y%M3AB;AT#6*QBKQT+"6Q-3%&9^FBC/&/!NM:J&+N.^FX/HN9#1D MJ T0V88.Z5#OK_N>/"[BV*UTIKK-DH#L* CLZ7U$>L&FDW2M'N00>ZALZ*IH MBCM179DCR(K.2'J('$;VZ3;B3(0@,W'H7_8'0 !0P',S"AXZ?\0$W$LF@-.W M!$^Y+OKI?1C -P4TWL;W$)?K?$T@@(=>"3:W61.!Y(E >#(OG8&X M/7V[CQ!XV@HHN!->1*GD>DZS64,3YD!P/6/81'CUO0JE7*"AZWL8T42:OGB@ MOO-Z]WI4E\KXO'=]_S>TJJ+&4 W]CEK/P%Z_$#W M#VMS>6G!*ZKU?N&MVZD1RX:P, YI=5TP\@#?5A3#:Z_7[;HNM0V?QBJN3G3= M';250#)P!#,2(DAPHK>59$KDDD%";__J,&;+F#XAKLVARN*JK.5[E!YF\W%U M#FB'2FO?A?Z][T]OH&)=7?$=S;&5_?C8VC-ZJ>[>@T$5(M>]1#!3J(722QM: MX+E/02PL4IAA=$PA=_SQ!/3B/=7?O?^L\P4=K4<\ZD3X_@1=^$SNV.R 9U 7N\>)6 M/P*&78.63/(6>[^]0ZO%RH"^N@_R 9-F&0S!=PS@T*E<)&4*B64Q0X>PV4-S M)X)7C#BT$M1F"0>[D[+0B$%KI[:?JL^7U*F9V8Z$H/BF/LVT2?:I]#I1+33' M*CV?@+=H!YNH@80]H5K"F^H#T@;;OE?W!!-N(Q*EW'X358('L(.Q=7*"4*0L ML('."NVD;1L*X-TU#BH$PW,/U+7]J$&^:%,CE=^+HP!W;F\XR>'E8E/'0YVI MEIFO)C5=7J6+;D79N)=L@O*26T1'HTK+@:X02=7>-3*0]S'V@XWHBGND_MB M.IO6H M>P_E @)GK*H3+ Q)+*3!*$ *.^ BSL4;A[M(&+ ?DA&\$'@4IB6!@Z;E;B?? MB;;.>Z-V6UP"\S43QIUR/W83QMY#29GT1U(.L NW)_;WRT3U;F>(R_=H++NV#(]SECOU3A6%)&@43H0)[ 'N%YACF[,'8!26FI M$D113CBZ5(+FR>30F-OBN[1HRJA*3/@<:RL%-1P^%"Y YWJ8MGHZFP< MCHH_<6]GW^*+MP:DVY66=PU[H2$;RT!5HGN1+;]5FF2H:;4S'\6"\.D"\1#L M^8.PD;H!73EQL.'2(@0ZEQB@\H*7]$X'V#N5.G-L%U+#*.Q.P?P>I30IU8ZJ M0'H]3%Z9KWTMAVSE$'=.N0;R#X@9I&W_&X>J9#FD"UUX:$@;="5($)[/=8FG M_+/5;]@OFPG#7IL/&U#-UQ1TKK"Q!3!7 GN.B!O1U40>:;P"(RT MH )45LHM"CCU'\CX5CMR,<$UR-;E!2M0\T@T;PNHT'KR5+YWNR(W=!E['"'4 MT7 !6*T!/E?9[&J,T;B!)S3F-9QA(X@8"%NF7E6#:ZPN2P)UNCI_';I+_(.L M&[^S1B1:)S16@?/F.U;YVM0(O D#T50>\1TF-2]CHSS6LRGPJIDR"-W:.]WS MTH_U#UJK;=1YJ#+!*4BX/BF$GQX6J]GPYP2*]_JE_^NNBSYYH%;HB'KG1;]Q M.8RQO0>PSNA(S'R"!Z[KIKQ0:9D90A]TI'/LQ*M^.+P"XZ*=@2 . M@J[@ALC>1SZ1:1],L[5_\3!Q@,:;AT=7?6-E;I(R3>LP5Z]#M+ZX@<\IAYA+ MX2\UH"7'/JIL9F9R05.$ :88@]&Q\I [<1L5Q7IH$E=I)="^;F:\<\4C@KJ! M36IJ*"6L^$GY'\>RE ?0);F.0X@U:>0#\!LVMG.50,FNBWR@8>49^B=_%@4%C5\+RNC=J)-Z: ME 8:JOJ&$] M;RHP5--5617"8S"\LTX%'Z&X+L/>_0P;2QV_5ZWP0RQ_>C;>WZJ0H7"1\XQ$N8P 9+JO+J56^.U^'4590DE2" \X] M7 2C3:V<4YI\Q/K)-\36);:PX*JI"?5FHC*5 MZ**5P$U4LR6/CK]UW!K)[.&+_^$;6TM,1[NK(^[$%2'P[:7;2$N*&W$AA"[0FM5I$5$*JQ#(J! AMQ#UUU=\/RXW?P M$VQ@0"$:QS5JGFQ:;QLL6>-Y8\ (Q)O.6AK;7D[ ] 9-7L-##>0OKQQVN(S" MMG>C[6:K]@:Z+0.[=I%H:B/QD3>;]\JTKY4>FG'AZMVBVXL27;:+D[C 0#2JQ@ $0 '-PGM7&>3P]>O[Z^ON[= M#-*HEZ2CUQOKZYNOY8HU^4&@0WLQ79AIOS=*KE[#%_"#C4US(7X9S%TK-]UY MS5^:2[,TM]<-53:@Z^##ROW"F[P+SZJ,U#P[C*,PUO_S[OR7UWFJXFR8I!.5 MPR3 '?K;W?6][F9?[E/Y_?4F/:J_O[__^@9GQ3Q,^\'RMX0OYD>U?.[N&M+& M>G=]H]O?,#GB',@7E2=FTVQN$N"#9#+1J:][\!>ZN+]A7_C@)@N7 MO33(H?_Z?S[^QK\RL8_9<[5@5^/5"9O;S(TUNOWG\-W]K1 M+-RX(@3\MIS;VV[9WW3FUUUPX5T+V7W#@TC!GEC3?C[KOZ]"*]^6CM*XES'>?=R-H6?^?ROG]9R?9._IN7R^NU__==__9B'>:3? MHARZ9O)_?,T?_OB:;SU(@MG;'X/PRLOR6:1_6@O";!JIV4&JZ"0. M],T_]6S-"V$5#[N;.VMOUT':Z_L;._O[/[ZNW/41#WF?^'!1G'\(,U]%_]8J M_0"?9/8QNVMO\?6?Z@%G<'D25!^QM_;VP[^__@&' GA"ID;WI_MK;H8HR MO7#?UU51I'JH4]"G.ENR@G#A'F2TE^#)'BWD@QS6S4]K63B91KCLZ+-QB@.K M+);>31; 4J+GE0^19V9)D=*_:'T?R-O1V/'MS.>:5H#Y5QC@OX>A3CT:DUZJ M-H]._EE=&?,_?FL^JMY]2I(Q_X)=E>;O5:Y)^MWU/OS/_*[\S@XS*"_M;W0W M^^4C^!OS;_.0UY7W7CX-&S68!E8ON4S"3G=SW=Y(OGG8FQ5QR*]5P*(P'TZT MRHI4OY7#^.#SQ7OS<_.5^3?^?ODL;=9KEK;H$-S\QEG*Q@KVR,)$R?*C+Q\_ M4UOUFJFYG?*XF:J^V7:]WFSC6][,W2EP6%R@L.WKP5$+PW(O);6N\B3]RDVU M\'O\\+V.DTD8+[OM0Y=@Y1:OJZ._=Z7NU$">E0-@X^$'P,;3'0"[=9N&_L.G MH?]TT[#WW-,@;Z-':$3Q/P-XV,TT"OTP_Z@G WA$$,*WY(*NB0-S<)'#*^%O MCL&P!D,UF4S![HWS[/ F!.5M+H//)TE\D2?^%[[7CZ^7/L+.AAW)X]3.^M,I MU/V&3_EE2BII1I/.\]^4J>^O-WSN#X,@Q) ^#HJ#$[B(S4-+\M6>W0WZ7O1K#4R__K-[=DVV_>H@H&=WU;X'2[$.@GIV9[+Q M9DT=I-1T7W151"F>^\4GN%4XHJDU'0_?O4>XHH$UW37_J4\Q">L7MIJNE?^TA[B4\Y]T[WS M57B(3SG_3??07]1#?,J);[IKOFH/\9MD41;Z\L,7*GVQDMZ,S-SC$96^M77_ MS]($9B:?G44P68=Q@#*>XCW>S9".@D5,+W\"+Y2"6HMF[_65CN!GP44RS*]5 M6F.YSHFAMI[_P\6 VZH 2=@KX.K&R:%V3GV6Y@?G*AZ9F89_?@SC<%),[IG3 M9Y#PZ7 8^MJ5[X<"SK*\:)" :QL4> DQ?-5J4SP M.<#XAO<;A8-('V:9SK-WLX_JMR0]BE0V[Z0660[V27JN(V+/RL;A]#[+\?ET M2GVD7-O@0[VEW*R]O%V[<,?SG\9?M7XNM3^.DR@9S=ZI;/&'C9%W[4(L7[V' M6GG?[KFV\Z5V1A;&&->&#"9A1 M3,^Q#B]/CO\)7^?AS=^3")E/W_WW\^+*,216 MQY_/OT+6M0UQU5+6);7?O;(N+_V67--V;:-4]9-/13N_4"YPN[;AJQK(ITJ, MN?_5Q)AS4UZ[2%5=I_SIS-/:QHYJ,.7S6FC]Y1$)VVWHITDKYIGT8AL9:M(B MJ(':V*E=E*E=,2]^MN_4+O2TP@!18Y?#DYTB.[4-_K3+H?;G26V#2>W:6<7) M4MO8U53@:MPOA_H70O""9!5K":^KL='@24V.& K%V)Y,):,@T M5-&2GW^?M2H[S8NYU4F"S[2M&AJ5(]3J9:H"?3'+L[W;[^P_;.95+OZFK3VTC M4[41S&IVS&YMHT5'";; ]/-?PWQL(H'OBU3-2>A<^T6:@OE\#N9\7.@G 1N> MI4E0^/EI"L;&5>B[D.4/130,HPA?YOM<$+6-%_WA%\2*&K+5-@CTAU\0JZ%] MWZU=&.@>@1S&*IKEH?]D@9UG6G@-/3!J%PQJE\,JCXO:19;:Y;#*PZ)V,:U[ ME@/5U7_G2V%%!T7MHF?M4EC5(5&[.%V[%%;5Z+JVD<&:BFDURGOOCQ8G;*9B MW?NC1>\:JO2:'E,[C?4E_/C[5GFUBW/56D@K4GBUBS[56D@K4G>UC F]%&], M'519+:,P+T7I4@ M[>(*]9GF)VS4N%];GWU%TUP##;-?6P>]#C)9C7&Z7UMO?/7JZ EQT_NU]:;? MJ4C%OKX8:YW_DOAJ$J0AN_60YR ]A# \.570"\YH6I83-!1^3 M6,\^JO2+SC\4<= <6=?6*6]E_=36W'YM??M[I_Q(I_@,6 58JO)>3Y/,W*\! M>ZQV[GJ-Y_TIUWOMO/2'SSO#Y$/LR#%]NDSI[3J5+!76:6H0Z0M,&X1YV""C MI;81@5;83[^S:QN7J']OBB<40W^]MH&+!\G!V8#5_A1-47K]]=I&*6HL@"?= M ;4-23Q* +]HE>EQ$@4GDVF:7%$(HS%'?W^]M@&+F@OA27=";2,)?Z@V-OWU MVGKY]9?#D^Z'.GO]+T,>6*--4>=0P!^HR\.\6.KLM#=ACSRIPJJM4]VX/?)- M8BG[>OX^7&SJ6>3I 7YA?OR@+BC)%)?C\BXH_-U#;C>W7OJU=?XOQBK5YWI: MI/X89 ]VQRA5$YSDWF5SB "P[W^5/)>^J&V\IA5\C=1#;0-*#UHE&]__*GDN M]5#;"-9)[(-_9Z?^%EA2DN6GPPL5?:?(V'Z_MI&MFLEG-2C9?K^VP:Z:R6@;O$$!+X^_'-%&[U#+'Y6JB[VL;%ZBVN%6F_C=J& MI>HMKA4IPXW:QHX>)*YSG6D%!C[(2V!<9)-_S_IPH[9AF]I+;%4JL;;QEMI+ M;%5:L;:QCP=)[&<=ZU1%(+##8!+&898C3\.5_K[U8K/#%JN5V:HT8[-#&:N5 MV:IT8VW#&X?7*@T6<9W'DVF4S+2F*.PII=N_4PU8V\!&;22S*CU7VQA&;22S M(FVV6=MPQ2V2.=/I,$DG7%JFTN\UR;%9V[A$3>2R(DVV6=OH0TWDLBH]5ML8 MPYQ7VG^JYI(8.7E=IN5,"A$6)])N*K[48%(!HAJ3J8H-N- MBEXT0JS/Y&!O-R6:L2))W3OW MOE-M6MLP2\WDLRISL[8!EYK)9U7^>&W#+*N7SS,=*3NU#8%P<=^ENCDL\G&2 MPM"J\_T>OLWRT#]*BCA/9\V9\=J&,NZ;<2JT!-L,ZRRC?Q1IF 5@N34I2[53 MVWC#?7/_(4EU.(H;M]AK&S9X6O7R#8_]I"9SJ4G3]>I<7^FXT!Z=C?SQ1Z9QE031OLA@^Z?P9!["8)B_G8N'R[].'VZEMG*5=NDU9NBMR;W=J M&QYJEVY3ENZ*//^=VD;.FK1TI6YKVU^^@?9 VOR'[8K6U*H%W# MC5O#*[(B=FN;6J%.HSHX@WF87:8JSI1?+F(ZMD%$=MUFE\F'I(@#]?U24.[6 M-BE37U&M:E?5-I%27U&MRA!]]L3!X]5+?_UYUO?T1_H_F)]P<[O;WAL'>3G^OOQ6HW?W WUL?JLV-O;VMP5Y_[S]H I6_ MR?)9!/,T">/N&,R(<7ZP/\W?7(=!/C[HKZ__9:UR&0ZFJR(P-PY2O!B^S:8J M?OOC('T-=^6_\\T7'N'\%H]IG<*/O%S_?W>OOKR[]:[_7I\]=TO]1\*1.Y.<7Y@=_ B^#, M_+2VN3;WKC)ZN-(+D@+GXD^P,M],51"$\>A@W>O#/WA^ MDA[@G?'F0UA3W:&:A-'LX&^7H&\R[Y.^]LZ3B8K_ULE P70S6(5#OC +_U'E\45U-=1PM!?'1Y_/3RY/ MCB^\PT_OO>/_.?K[X:>?C[VCTX\?3RXN3DX_K>X5]A_T!K^J; S+)$_BCO>^ M=]3S-M:WM_9O';7LF#R9'FS!_>LBAP^GYQ^]'T&AQ4G\J9C 37Q/]-ZY'I+& M7_-BA=H\T.'!^\0O\+A"3V"-5-X0+G@+"OB?I!;+N[Q]X$P\]7OO]K8?].(_ M8$\E[S36KQ8&N@+-N+>[_5C-N-';W=^]4S$^6,=N]];7-Q^B8V]3J$9E;DQO M4&FZJSO2P\4I2*8/%_NO<&.\>7;;0E^?D_?6O+S[=.H\>HT?QG&!Z*1IDN9K M'M5YY'#$W^0'P_!&!]T\+>P> *_PYM8-D >KF+<'JHGYV5O8+31[AY\^?3[\ MQ3L_/CL]O_3./I]??#[\=.E=GGJ@R"]!6WO]3>_TW.MO_Q"\\DX_>)=_/_8< M'6_U^^'1)7[=W]_4&[H3N3N 68_Q9-U"S[@R>U=6Q67Y;CUG?1T6:P@-YU#CH MASZT?!YXUN^USTX3FM/5A=_QT-3^RO.@+L)-TO9<:,^%I;8/A@%""G/>>C8, M5939PP$\YN1[/APNSP\_79S0*= >$,L.B'+%>*SFO6&:3/[#_^6)_*5A"A+; MR8<91LN\80A:,2[H.'CX?CJF ,\'^.TG^JG9+CL8(.IW-[=VUS>^YA#9>!'W MZF%.XF-GXUR/J'-7G"->WLS(+OC+9Q?D&Q^?'QUWO)-/1[VGG)IP,O*RU/]I M#2.:73R]^_"__XSZO=^FHS5/1:C<)J/_R+^KD9:=W>G-UQQO^#LZ0U[&'MAGGE'8Y7"X!?] MRT?LZQ.O'F%QW/[YYM;=P;X'#VJ_M[F^\TRV"XOG!0[@ M>S7Q(TT85C((V4G!W^QNZ=\]ND9?QP?4O) MCQ]H<7I@19V"&95Z;C$F*&#*>U06,UV:CE0<_B_]^]5WNA(?.X\GO?/>1<^3 MVNV4)ZZR^KQ/2>]5XPWNQV["PR!(=9;)'[_ _?HVJKV^]G9S<].[2(I\[%U@ M@03^F:=:YXL!CV]_\(9]\8WV"^SJZYT.8>?J#%R!V(\*U$P>3(:' ML_%-!N<*-NT/CPA=X@)(M:H(?7OM[4Y_0>2O'K&RJ-+_;)S$O[F[GG"BGW9!#93_990B0*8K MLS"D_]Z\T$J[@-V3AGD(-TQI+G0*[MJT2+,"G;@\ 3W/QD5_XX?!*]Q[&+XY M]/.#1XG[A;VV[=[^SN9CO;9-<) VG\YKVW@2KZV_T]O?NMMK>_E!T4PUWI5\ M0%Z<@[EA'E%T0RM_[/F1RK+ORXA^\$2DBM3@Q6PR2*(_YAR82)>^\B! M:KP>A[ P2OWY&&=4="&>%^N]71B#EX'I&7CF5>HY-]^:.))C9];?&-#NLN;% M+D?185*)3:OC357J7:FHT-Z?UWOKZWUOBFC*\;.&6+Y!)K>GH5[2'GIZ@XC(TKGWRR]'WB-\ K.[CD5' M<>)D/HB)&JP:O^SOHWZCQ_\<)0/PKOCY"X[$$@'7*S;R4,C;H\S?T=>;OZLQ M^1<6&;WS)_1M5@1%?-@(3^( 8W#:&\P\?ZQA'V"QEQ?RY*=ECBG,/.5=ZRCJ M?HF3:QBF5AF\70!?9 6Z;BKS CT,8TY!G1=@QVVM;QLQ.M('B?8>'7CY%9[\ M3WSPA3SWA!YK$7#K:V__K1>B2';NGPC5\; YO7GD4Y]2GMZG9#4OG7PWRSQ. MK&P,(ESY^C1 J+X!OP8G%2Z>I]C6YM/T-CY"=F?<#W ],)2\KP*?+ MQ@D"%CPN@X+?J'Q^[-3Y?" MCW 4T1=9B& M*OJFA_[U3_N[6UMOOJ.-C LT;QV+^OLU>-WJC,Q."^R<>U.W6QW:KM3GVZGDNL4P;"UIWP? M=FJ*1=VT>-%OBI=^"F9HW%WZ13:!+0Y/2#0PVG:.2! MZWN=C\W7/3BN-8V-_#1"!%.&%_-Q&_":MXR0ONZ_,9?=>\'MXS,7XADM%]\R M5G.E\23[&X/NAK$Z7%.C]RW TY?-E.UM]_8W=Q^=*>OW=G?WGBJ_M;[QN#S6 M2XWJ)>L\6"AK4E3SLMKCJ\!ZY!@=P88;)>G,'E);:V]_H1U[Z&Q(NO2;8\2/ MGD7QXIA=YRL6P1'HKK4U878(=8?]X[8N/@N=MAC#Q&:C7=%!C?*LGN+!C?NK1I\X)Y^(!SAZU$+ M=5MUQ\:@_9D-VC_RFC-SP5,A,W'_VMMYT-I[2 )T8V4.XO .1ZP#;LT#TQ$8 MY*'0#IPUF)?($Z_(V(F#F==8[N_E97VGA%$PO(+/BF;X\.L0'@V/]6)XM03] MLJLP(^E:#=_4*^6^F-M]NDI GL2 MG1CC4%.R*!=.- MOPRE 1)MXS2)O 04C+,H2O>]@&666M%OK6\YZ-0+E0X4W+9[>A/I&07_?^AO M>Y][%TA*M+NQ@U#65_CBY5M*XG\0@0YQEMXP3"<< 9S"LQ5>!*N5TLL!C5@5 M09C+N%:TSAZN 4_\87J( T[2PU)L'R(UNI?-9?269U<<:0/C$!Y]!>TX@\!-*[<&Q'\VRD$]SXKZ&X[T[4&C8 MH5;5<<9V F;@X"O*Y-NGNXO'V@W:EGW+Y,L0J?D?)6.3L>D7I6C4%Y^$FA/VM82;^+(KC0\KLQ6!/AJPV MBBQ8F],C&VM@"/CPTRC[::V[MWB,GY'=^"%*5 Z>,\PH?+MOF<'6U][N]FRU MG'GB6V\01A'\Y4'9HI6M0H0D"X_-8U? 7>#]CI<4.?EU*&E%M_R@!RDLQ!EN MV/4W_4U:\ULDO%NEQ0.:%]BF*["33Q^6P&)HG 2ROJ!;G);#J9X#\/+=(,F[ MQP-G@VPAA.S<./QI\L+Y/8Y M/3\[/3]$-M]W__;.CS\2R+-'X9NK:2^ M<6L=E2EGVE1G1 M2T:L>6J8 MB]VHX<"1UY-S!SD;/3JYV18@S(Z\Q[F-,GR W>@AGVZ';)'0V0CXH]1L!30T MD97>.SDYL0B@V^_&=%&N1-X^ A;?!-[#_G9O>^=QM:/MK9[F5KL/(FBO[N&GM$P#SL))8$_BS;6W_;WMI^6YK-D4&?EC MB=D?7/@N/>'FUMK;?YY]_+GC_?++V1]B 2!A")ZA?_!%8*;!+H3M"J-0QUOD M^WE$%G'U>,'OM66)TVMFFG#B\B#%1D=@<=_:?48>O5[^1 VR)"KRQ9_@^4-$U6.#X\LL[ZVRAR!\[TJ^IFU9*;W_- M)KV?;9FK>)Y+#;G:/>#TDT==1[AI2,V'?GGX[I=C)*0^.OUTB?[Y M0YRFG14X3;"F>^N\KA_E-6WUUK>?!I&\N]7;V7X:YOG=WO[^W>0]=0$_42.N MET$_W;]B2?QGH!COQXGM?QOHR5GW\OLN7GRP?6? :3A\MO?F80?:%R;0 X), MX%4P'%6;L7CC%,VI/SV@41SX4V>'H"Y/?GRME@'(GZ/UPM/C\>_OPL Z:YF( MGO&)"R("$_51TME9>WN2ZXG7[]TBGA>2RA,MXP?-T0MMJ4>.Y1%"VU][:_"W MSRDUM[QEB3WC]FYL]]G](MMJ%6#]!(-Y0%: AZT&;(P&1*EA;W;O@_+S)&VU M8',V6[_?JL'Z269KWZC!=ZT:;(P:1*E]CK&C=X2XO(M<#8<(0B#H2:L3&[/S ML,EDJQ/K*!G6B22=!H[^J*D#;\^@QIQ!NYL[L-!F YU*$<.L/7@:L<](<.W) M4T?1;&_(R;/1*L+&*$(4VEF:3'&.=6M]-V>G;;2!V3I*9EMTX&:K YNC T%H MO^B1BK .P==$V-FJPN9LN%85UE(R>Z(*MUI5V!Q5N$<88N0U&>I\YKT/,RR1 M+=+6-FS0MKM/(A/FL U=$5)?LE%Y['Y$B+J/5<94"OQ;IV])>ZHW9D=O;+>ZMGZ2V=T47;O3ZMK&Z%H4VO][KF$ M5SKX_UH=V)B=MK'3ZL :2L;48^RV.K Y.G '[)7' C,MX#2C2(F)>QM.IYB&UAF5SMN[&;JM4ZR<9N(?1JFV1QZK'\DBQ M_0L)0<.<*!U(1<('D?FW$U/W#@=)D1LB2:P-:=5F X\J4MVBK4YNS: MG;8:N9:B,8;G_B'*I]=JU&9H5*PY3*@'&%N;A (.6LQ;LW9>JQ3K*)J-=5,5 MMM]R-*QZ+(\4VRFU;#J)N44)W*I5A\W9IOL*F.2=Q-I4&=ZT";R] MT[$&DQ*1%/P]699E58641]Q:I]OJUN9LX%:WUE(T&Z9*HM]2KJUZ+(\4F]&B MI" Q/ [:-:NHS,L4AJDX=MX1K!O[]=X)/!5LU$"W;GNC]FJK1NLI&D-CT&_I MVE8]ED>*[2P-8S^<@@WJP'P_:"VE$SJ]"OT6RM:DC7B?CFQ3C[5)]S4T];BQ M8U*/_]T>QS74 IL&-=EO*=Q6/9;';*M]C**/PT&8@[^RI)S1N_#'.BBB]CQN MRDY$D?XQ?!;6-SMMV4HS= T>$1^2%,$IW7]Z%\5DHM*VBU%#M H*;^>>LNBZ M6_D[K95?!#F(%W_[@G90!%\CL'@152\AJ46X_QX"=8678>9 M]E+]>Q&F&NQEI#V>%NDT$;)BO/XPC@LPH,_U-$ES+&6W1UZ'OK].TB#SD+UN M8_W-M>[0W_IOS"=%-O])4J3V([R!?(R(%Q7/YJ^^.+NP'V$TK?R8.]:FOC9? M@WQUZN6)YW[9\4YB?\ZB MR&J2Q^$8YQ4YKG3^NGQR;YV?+L>%/%F^[L%7KQ<_W]KH;6QN+OUJO==?^OEM MM^IO]-;WEO_DL;>"46WN[=QYJZ=U %PM^O;'<#+RLM3_:2V;9GYW8WUCLP__ M^\]HH_?;=+3FJ2C_:0VN^4^?_UU=4AO;TYNO$2#^#E_L217'[GTG7G\;5HP' M_]'>.?WX\?C\Z!CVSJ>C9_-&[CFQ?'#6=?K4&G3OOO.#)F+C>SJE[Y?]UE]< M1P8/ 4?QG\'MDL##1&_@O=>^G@Q RV[V.QYNB(<=D.[_XYN' 6RZ.TBU^M)50U@@!RJZ5K,,=XQ[#,.FG_\1_GWR"3SX>7IZ#D.LSOL/C(A51AGJ"JN51ITHR3Y@CG/S)+&F3EXX L=P<@& M:7C;B_2_\D6\1P[CF><5B:'"F)3K1*L89TR,[,^]BYYWEH976 U3]@;Q?H$_ M1K0501#( N =^CG^J+^_O]U#D>#\>XOS#\:P*9 %"]P#F]L;%!F,"+R :9I0 M/2RGI_&KM.2/3BQ_M*=2,%N+P6]P*5K5OH"%TC#[PC\M8OF,QHI>0^ -9A[, MW,P;*BK^H>NH"E=J'H:) M#X1?Q@G- 9CHOH;W#@ITFZ(02Y9P;X ,X;&WW[;C78]#>#"\F?H"/X#A*NMA M!2AT^GN($^0X/S'J 3"N%CR.0AX_D.=Y>%DR1/U#8IZ M_M,0#XV%>X \%US)>)3 "\Y_#%**%SY+\"""E;+P1:JQ:GSQX^2W)4/+QLM> M[SJ,%NY[7;E0;*I8CYB"F$6/2U6GDPR_)G\0 )O^==A*#B5!K!O9Q+::,$.O/3<,#[<5CD6%^/4XAZ M@W8_#)B&.$I4Q!L#_DSFAV#5T;(QX6:D'\%C)K#!9+>"OL5M17_"B,'LB$ ! MP+#C7 GF,(S]J"!%ENM(3\>P'?$-8?,C\)"TQ&L8V[4>P%9!33'5,=T3IGM: M#$ SP\N/8= ,_$8-8Y8"W!O>C&L4216B".9W/DW1/3,.]TDBD.IMJG%!\QFU M!N]L)IS,[/M5V[PZ0QTA>J0RW0%-J*-2*C,YOGVL9C4$^/LS!6?_"?B!F)DZ M.>R8Q8U$V=X'5O%VB8L&N\-P,*[%3*OT-H^B@YI1='A%<6G VH3#*-._ M%YC%_5 M7:1_X@JV %H]CO[3!O#:8UP;SVF#> M0X-YRV)4;3#OQ8-YFVTPKPWFW:L*E-+;SQC,8\3MH@'QP#6\L_: =UW 4E0" M?=V[T!7/_/:,+^O]]4_]G?4WB___3@RLKYZ>_7NFYXZ,^#._^>D5%F'HZ_J% M9N\,&+J);"]$)R(";P"]C&F:7)&M#_L2[/LBZ X4AM\R[-,Q\\ B!W-^4I9! M9U*$XBD_3;*,#.I1E S@3$@U^'X1."7Y=9)^Z7FG\!7*?!^\GCSI$?(TXU\"[)0<#@KVI6D0H39N=91@(^701V\"@QWHO\!+%3&< MI;D6UP4LYP&3 :%7&T[@!L,9ONDXN<83;"9O0Y=GZ,_#L/2D0SY\#,^==3PR MQ_D"%:$KJW)E7W@"CP,_)=;VC>6?&;F"@8[ 24AI8NS;XX88P:RCJ]65*?0F M"5QK GKL4U,G@*" .9AUC81R[8\Y>D,C4O"!FJ"X,.:5FMA+,@5G%%9$1YQ+ M"410J%/3R>W3#)US M6&.PB;2L&G!1PT$845]O7D%YF UGY%07,#98(/#T@'(>(,P,A$F0&G==D61# M#$LU32J'Y(L;@Y"/@S(@N\V"EF$6#&8NWG'-_!WU24OSO#@E&HRM!9(Z5: K#P(KBB857AJ#$!,S=M,@!Z8;Q9!A?X'-41:?!N M*>X(V=1S.WQPXI39G+W[\%P M(PKZ_7EK>]W]-][BSYM[V[W-\C.0Q)0#\-&,3^;?.?!YYZ!*&X6GH;SWM_[2\?8W_\*OM+_Q%[-X M\B0G>\-9&U\[RXL38V^+I@%F2>!]T==@09!RPG"M&73'[,,(5J#.[$JEP%/H51W._IX)-S[YQUSR?>^@W;UI<8:^87,.8: MG R91X[Q"!-+E+KVR^9.L.A1$Y)\S9%%9PFL>!W))N?$GC93-$E0[X(I/*%O MW<.EYUV"WE57F%/0:#2GQ51R[3##$ZUSVH9R@%;LC@ZG!N.PM.'S\G7 R<]F M&;IW-! RHUC;DQ$9II6\/BD#8X#31[3#K\<)K'>PG#N>+N&S-#)JC\K);S:M MC>V,STG0'H(Q8Y3 L8:FZ!QD<+Q=4A[2_B).P". "4ZMF1M:)I$<9@J\"/@$ M7D8%W%^+,P?E^3A4V5@.4C-+F4P33_Z@F)E&6V+6S\AFA(MI-/"S!+$1?![C MC/&L.P1HD4MI:COIFGTHV*\B(Y6I&)Y9>9G-&6LQ31<-*]5B#50/;F')G M= C2V^45MAOR3B1=.B&+<]'O(,U81$,XL.5U/(TSLMG+*>#@ M[8JPAO3?FY<27>>9D8%WPQ+AC\YZQ7F6([WJ9>YM>V17IZA%R>PHT.\RRZZ6 M$TM[P09X8&V3"QE(6$O6%F%SRB4EVP6LE*4KR3.K,"]5_%.=IRN?KTH\; CC M4-1D.8J,'4H!T*J?[D9/'1R)X# 6J*2;S]XJ-UQ#QBGCAX!X>EWWJS*NWN4=*KSN['9(XJ<#QQ?H!QJ M=VD-WLHG&1>5.TQ98 RRJ< ]= 0F?IJ )\5X$@Y&LVOVP]KQ^Y.U5Z6_0AG4 MS*<0.8'^K7>%<7UPJXXJ45$,_LW%\QPG3N*)<_$=C-1C3+ :AW>K.QX4QX>Q MN.\?4BQ]&(X*+CXR\=8Y_Z7C!8E?3*0ZPKZ<#)VB$_A+AE1,JET8;,@8IQ?< MT5"JWA+L^@YO/=;1U W8.G'4JEM;R:BTBJ#&BN P5M$,EVWMWN&6P%R-M96= M2ZNK&#V5S8,XRG!RB6GB-!U&DNQ)2M6].I($!P?8K"YR0B,F,ODD*J=\"1DC M80=0A5 A6D9J;R@/XJ(DDVDAY5L.U$74"+Q V9LK#([[!I#CA&ZM9JEQIKEE&*7)F_D=6NY;1%7*A%,V&K@;!+X$+/(%..%16UV8\>3 M8.GMAFUE&O;7F[',]G?7-U:VS.X8V\*BVB)7Z##+DC0GBZ5>S!$U7=]T+I5S M9@XF@6]SY;.N8DTHVYZ F9=W4/47# A6 J^,',I!8Q+A/-."6/ 5_0S729 MRCD-:C "XQ#V%1CD_+2O.,=N5_3MEGO^+7?$BP-,E';'/7#'E5-F-IQ"IH\E MAF")4F,H@'Q7YELKR&>RA\1T+ LR"-&#V!D+.;#;C"Z-39YRWMV+!XDPT,!U MHU1-'IS\6A&<8PY?SO09Y+4BA0 A>XG"PASI"6:"$'5C<>(FXPE7##55PL.) M7Y;>($B,<%*,34/6!4QWTAS7':;SL^ 2<0$V$_UYN!2:8S/,"Y541FQES=-M MA0*=:L;8^&5W @(]-4D(Z,!('P/TJ>!\2IC/+854&&T"'P@.43PJT84QP/X2 M)^?_7H2T16GW=,U!#"/M*PM;A8\;&( >PL M@ "S%PYFI;!>[=VEKN=_,52URM5/A MC-&90\(A?1;![%="1A@-=JBQE/Y]*W@)]&#(GU&3ND MC'T-ICP.F,)#9K*6"Q2FBT+MX"%G"M92E2V'>&K,\H0KDZA@SB,$ZE[AZ%B5 MNJN9"&:0)HEI>&"SJ#1VIZA:V\)'O?NCYFE' RGV#AV-?\$E6?73CH^TQDN3 M=WF$]@5M"(O-Y3)1:Q3#@AVKJ2[KE=W]S74,+MXV0J"8#S_H\-6F;F- 2#52 M VJJ*'IKB);<*7>@3:85&O0@W@,Y:M1\)@" M5TQX2-L9AUB%#&+5'!9N"$K8WH"(G*[#;,PZM*ST-EHO3-U9)?]*4'W)L(O* MQ GM8I2 ,(?*_H;N'V@?;7)\ A^/ K#^,HP(/XDOF"?P=-)+7+O-8$$N4Z6Q MH,*VKTT%IW1"( F?BWKRG9?_I& M87QY8?MQ-3(F4,(TZ.)O9HX[4;))4-:V0!HV, Q2RW*0446E,,25]FGR72PB M[FCM?:1,%4[IRA>.!ADF,\OA-[$CRZB<=83N&RWV\ANK'@0A [+&G^N<3&MR M#44GD+'(IE.H,R>)9ZI%[$T[\T2;M.A@*<,9ARF+*1C52:H-P2\[J59JU,VSLFJZ61D%EPX699,LRO,0[LU S7!8)7.]YIJGS\V<7A&?P?J U^#/MG9;L- MUBM]>>/$)/X&!7$X(+%['(]##(?)]LU>Q.$_LR@8I6N-$]<01W@2\T<%, MI(""8?>68D@S#U4RQZ8KTG;>4I+0@K2VJ=9Z(0'JGIE%B?U,Y$W>!;N'L_JY MY/?"6VVG"0PVY-0G@M*T LMSWOG^!UZDBZ)$@*3)SJ MV0L4E]0 X%DO'.>'(F4D)RA$$H/$\-(4Y<8AF28@@U:7]UEUK$K: ]%NE5UZ MVS84(R 4QJVID7E .;]\"3N7:3(DJ4:,.%E^1(KS,UE$F84P\ XWU>) T(6\ M)"N#^6:8)8/6 /Z*4T2\0T+Z1#\;:0RQ3<<2B\70"!R-.B #QYV&H&1,NY5: M4BJ&,.8513:]252TW/Z((\'\^D1OFJI1F5MWD204%*YFGY>'B"D=/*#>0.4A M3D?V,X+=6Y4WI_).#,'M>24'[>8NO'?X?:OV&J#VJ&4.0?M+W(60!S.1&*J[ M#%,X#/JC[4[A^&K^![;F4,Y"84B:JI\(?\<&1.JJI^DP:$U M!!&HF#+>DL.5+OZ6B-'AX$^D!<+M8;$E6'RF[K+1KW;CKV3CGV!P+C9M!*42>9WSS1QWCO%PEB]TSD44SU"+)<-Q$WF ?3]W M %5D=X4MSS1*(!53(LNP22GXPO"^XDIG#![\HJOZBAQFJ^QN REF'IL\:#1G M,*)6=[V@[HK'9-USVTZKQRX,L+357#767.6>-XZB*=9CHO,K'253[OQ=Q#X? M2H2.QU"4)M@SB4&V+:(3NV]Y5]NO+DV/O MGW!!'MYX?T\BLDK>]?Z[Y_VPYGRU]JIS2Z.]2F1)T+*FI+H$)QR_/Z$1ZBXW M,R#F F-$VIC09Y D[M;VO"?54OXG?K]!49O6Y-L(>%E MF=V2-'FUFY[-AS?IJ&ZX\7VZ*#O)7&:\9\M*U==N(Y+VY*[MR7V,!UV%3<;[ MX6%4:*^XR"Y;7A$KA^+\GN5V2H>9H]XKN2)S_'46^P?.:02BN?030;J5V1Y7 MOQA83,^CUW3KB^4*>07R^^% #ZUO*36Z\AJN&BK+S)U^:V14?)W74':7-JIH M_RL+-9[JMFWI1ENZT99NM*4;U8G8:4LWVM*-MG3CB4HW6F_DF[V1LRS-I[(Y9A/P#49AI$TA>2R1 MKJKOHNF')L_(7!X][UWY;4%-B2O.C8L>LXT)*Z]JXI7970P*1*\U#:^2W .W MW/\2S0R;FNTB.TD"Z@>+LZRF%+*58$XVAND1?JTYVNTE;4ZKU-8()]&!RWV* MB+REK? D0GN/;^>G(=D(91(V*TJ:;4O$OSQMW8:$7DP)']GVQ=<8%ZP@(5M% M7%=%+$>GLL3'K!H1B-&U10E,F0JJVJ1A8?\.\\SJ64O))#A8IP]WV3D92I47.09,*_-->2-+%G1(;08'L( ME=VM0\3YX4ED]+^<>_Z7"M+:1/Z_:#UUN[2G!15Y>MDD2?)Q5/O4S:5-,G7 MJ2.H@.4"/K6OM7(&X$G(EC=ION;&I^JXAD]6]9;.5 M>6#S%-6[RIGIWLD#9U36S:5KF99VO>!_(]NE(5Y2;,8B'6>:8ZBF2A1:H>:D MU'HV38ETF%C^,THD./UVJV7?S+_O%EP0Z@",>^TKE#O<+TB(:,P2$SH-=0-B M'T6R +#8 Z(3P)P%CH\ EP-W#&)BL5^$BYHCM6: N,,$UJ='7 D@(Q4RU8(ME>)S7!.2TBQR M2XU;8ND@ 4 L[E MH5N<#=*#)]=WO/S-5,>9-A9D1%!AN^R+:4"6D/C\^O>"V[*1I9JR>^_NER3N M@F*8(&L%O!W>.*AP=ICZ!E7:>+89N)P?,AO+!)0C\I@;DL,-<#(J8!KOA[7/ MO8O>VBMX8Z,F8"8^AC'L\217](JXH/Z! .39/-C[HXX&<$]L57Z(QQQL"O7& MNTQ26%U)QSL"U13 !WB3?\["JX[W^4N*_GOS]O&CK;*Z;.-?M85_<<%>AH!7*)N MDP NQ,/#V*G*013:!(]%)) ECZ RT JGKTH-B0L%@FK)JWF?4 CJQ.<:X@L) MEU *8I+ +DW2"G\/J8"JBZK]+U*>#[NYH*._TD&#LPXS1M55YI-Z5K)5%UKD ML^-J=#2,/M5V9FCGDTP M620Z#NI:VH X+I8KF>" M7UF(#+7&:^V,U^/?"P*#5OV\C@EV9Q:4FJ-O:1HS,=D8!]?!1_F]6*PHYU:Q MX3_SJH<8ZH$3KEMU!B1 MG?ICS?LIL]@;AE]VD6,ZB:7%6MU3#); ^(+QY@V+D",F=/X5.(MG$WB"C:O2 M:A!\ J$)U^,$D2+<8*"J19.XBMOXFW3Q[%A.E"0>):;Q:I+F'<&LS?5+5;Z? M%#%#BZ35RFPN!$B)4.("X5;?3I7& E)%J$?H)9W%+WA6Q*(\IP>D/6\'\S1(UA$/I>$">#P)=E M=E*MG<(7G8^3(#NX#>9C,OJ="K68 328)=1QL)M\Q;"((@M?M&NR85..:D., M(MQZ[OO=UY$$(0?#5(WP0\TQR%1-PP!^0W!YV( ][Z@"\A0,HE3O@(RH?:EI M#LL6'%$'&1F$,7PIA4,V6==FZ+Y]",LM-)QF##D$^9A!R+J+2C.W*!.'Z(7; M6M@T]-W=>67[L'#GB]?>M/)\)GDJ.,DRJM-#!RG#J%.8$>B=25TL2)0Y4#"6 MX4J84WVMM%YP]Z5Z6N2V"H# Z4LTZ$-/R%96SR4KXOIKI_>YIA?[9XK1">40ABU_U><"$H'0B,V;]5-6%]2LEW&>99M5/,\OKU5HC/ M)<0JH?+2,T4,^H[M&$K$I,O82XGN5(+MIFY-A"NM9+*%7C*M:)]+M(ZESKW> M4!UBP>"]GMNMFY?Y%:A$I!7;B?O/GH7.26.1Z9:/+Z$^:0:_4Q7^!"&)#I:E.MO@J0;YMU94J29CH;T M8?^-A*K0W.%#MCPY#3JDVMN>04JW5LU3%?2O'4KN%9)G<^ M,VB&.?:#RFL3S9*$6F5\EONU1=H4&:HI;!,,&]DI"V.JF1&)3:MA"JJ7X(@&!9JQ)B?CJJ4DUA8S M3] YMT!PZ7DI464J7BRK.RI30B7)BT.2H],,JVD[]6,U-%H&>=QM=)=[:IJI M+ME%';N%.K T"DM#:U;[3&)(V00+2IUZM=OVVY)V$>5B(9(GTWYB89$2R6SN M<$/ CR)=Z2+O*& I'>.U'V;2\I4KIPUH*% SS$+#'W('<7 ZL%/RL/Q7R1+/ M-"%LM3E>A=!@CA>KFEYR#6,U,"R_:8 MEVUIYE?;N=7NO.J%&64:>Z-/X)E1HH2\'IN(=*FV+4.^*:$S1K'0HA;D>U9J M!E/8#'=$3@#A*Y9C+/:Y#0*55Y;<88V3Z9'5=+@^[U'CI8X@>IQ\-A4^!^K% MY#+,%],AUBO+<<(<1?>$NUR[-M.6&PSM!WFN$0@ZIX&6=E(+;3"QP2D(D[P7 M9.(9P'JQ+&]SXQFJ*[*7K8J9.QWN2WT8]@=D85A&UV#?J=+>(D^PIL+P5237 MZ#N/0]9=PTC?"'E;B^AN$=TMHONN3'F+Z'8G8J]%=+>([A;1_02([A7B?K"E M:X2=M6@5(Q5(*D029PZ9F+Q6PVS-.;;#*&2HUP)MFI],9[0;.@Q41$^S@XS M1% A+(:(7T0;,/0>D6"ZJFMTDB8?BB<(4-'07@R%,TV?%'3=]F.R@GKE&R MB*0:L1^: B=& IG0F3#[LOVX2H4*!IF@W<\Z29<(.[# M%+EF;$1#!QW3P&W&DD+/=(!L(4/NTIOPQT)W2,,(_9YW7KFWN'HR7G2G*$); M#GJ 2R#6U\C%&A/M2)@CA5?U->9?FE^H7$48C>-=6^F"YW(WN!WG8%0_&_7 M%"GN-J=]G87$RQ+",\/()L*LNV6ZG4DP2)?$$175 MM% E6H*-5#'&Q2YPR#(9#SQS-U*]@?+ (9A &;YO6?;QL;:HX\N).T941/G MKFR6(?WWYJ7.M+\7< OO2$T10-^P;7^8X]HASD:W<[?5UT;0 <4=*BTOD7=1 M%BLN V1BMNL1Y'&=CX7$V.>^6D2G:5I8PYV1$<4PED:6L$L1T10R#IE# ;9\ MB 4:EC,QU75*K#8AE&C=@CC<(S6,*YU\\ $-+D".GAB'1@<0J0B5TS$L!/]R/J4:MAQ& WT]->]' M@\3H/DY#>,7L]$HZ7F(LCWF7NE)\A-^Z$V;GHI09#7:B%2;PAD7DV>Y@"TP6 M*"=W4A8W[IT]N6I0D+*^B\P[1&J((B>F%F2/(H:OAFU&7(:#!!<(\;$B[#B1 M%J.$EX\S9>L +GG9H-(/\UR;(\E.A!29C4DW^:R;W' D"3VDRY'&"Y-EALY+ M%AX6Q3 C)"4N<(_[.F3KJ8A4:EDKJ?P!'W8T#O708W5X;B/=I\-AZ",=$-RS"ONXID3IR %_CC%Q6]3!M&=AMIX/.'!%(63D*_& M;G?P#FPS TK2;FQM4U0P8+ MZLN2P[ 9>PH$>J:3:=2T771(!N!"4*3#YE. %((4H(:+-CI;>_NNXDS2*+BF M4'R9Y^EW-C;WT/@S$6UIJ BRW]G:HE0RU8B6+2AIR6RM;WA$$+N<$987SL;Z M-EXDEJGX0Z#BQ9B] D-QK_\7S@B3/0<75P@U;8@>'C01R$:U&?)A%BKO3/F8 MNNAY%\4@0]]+.+J%Z:V< 6JT8#C>R'FE1!AUJH<1A$S%2/8B;YH*IA[^'?NF M0HJ3C*H861^-W#>!D.!CR^QASSN,D(T:S&9CY!(])<'"[39--5?[&>SQ( I' MI6-F?#'K@W5 (<2VYS?Y;-47M?>3YC#2SP?.Q^8A4S9W_F+>5*CY\-1G8CYK M&H%?,X1E(JR;&W^!$R @K4G8#+:=0NPUC@X 2)I9RZW'V]^SSR@G$J$A77D" M$G3#,P::3!@P04R?;?4]E:Z^]]71 M7Z(8V@ C5. 532DBC,H[EZ96UG@S9H7T$^:\OC&9T(=A2_ KZ )JLF10 QP; M81B[T?L9U0.2C1^?_YRMO8(CA7H'6*FY-4#2^P 5%2H_7=;\1G#XL@GGVGA. M,&2!X&\9)1G6'&./-\KX9QSF#./R+!MR>R_BJV>)"\AGUD5KP@!_S-B[$;'< MRHN.^$5EQ9J5S>%5I@^5U\MPW8)B#V#RXTR./6.EL,X&\U8)#DGGXSCT:?'Q M=W(,X >9OL'P< *G9!D^Y:P\K)G,DOM.\$\"ZQI28;1Q$NI4 1-4/4UE XE3 M"J=P2@ L##QC1-"_6>:ME\N0N0[ )L6+%NTX+#IP9B@ MCG,3+44.%,2X>H!&QLXQH5]$Q60>)/?WLD+O'$S);-+Q3B88%P=U]2Y4HIEA M3B".P)M81K' VWZD3&':5\!4& M]%#CC:D%$4)D.91FFFR"R:%-E[72L;0(_&MLLV328 F"-1SSR'9-0D"WOID: MMVQ84(I&O+-I.-4X5G3X3)<4]!0E%X6/+N,UF/=-P#Q.D^N>=VH:FLW E,Q]#:2A$XCQ*+5=!WAXY%8LLICC[B<"H$HC'&Z_B]T)J+6.($3L@P9E"&$\UA3A8L#0)_(TY2&J!Q MF:JC9G(DPM(+I;M)MO^6#+"0)2#NE0[-91?? YT8Z@)M>[S ) TYOH^NE-/^ M"M<#IC'Q32]\NG_'<[MN'F/G6:UMH=M'!>;K#VL7E\#EYQ<":L=VRG;';!X.^PEC Q=,;KT&RM3#P/Z6#9 M'=E."HM+;EJD6<'10Q^DH9E%PJF .(DM8HBKIC GA3\8%@Q?*:O%=%#XIG*% MXDL\B(Q'N> MV9POM: UFZDC&7"+/^+EA&(E]W5((2*\%0?)*=>K4UV5VKC%DS5 \3^J-Y0!Q2_, @U4M1< M%2Q5^TNN4$/L!:.XASK3H$EE'T/,L'<1A2%<#DZC@DI]TG%U#C_,!CI19\_;ZML,%D?,+':! M"MWP-(ES,W _&6,LRLV>+5A CL72O'TD0 YL6%RD5WHVE]DCC!?F5OBU,6]L M^^_"/Z?([02X+2/)7<:F>A[6LVV MQY7:72\+02Y@[^"T8T1;NCS3K0F[,Q\('8(^0;@B,8!6XM9.$%8@=AP/I5=T MW\B^C:G0C@DA8.=GBA!0PI;QCYNV+!<71I79%.=]?^,O9FD%E1+XO;V_B'6Z M05K;32^"XD1HK^1E*A ZVZ2M[$,YAY[KW.HV=*2D,9)C*9F* C8%GB04-9M' M#94YIJ_('Y)]A%WTM&E'1;[V2[8Q\$4Y! M?1#EE&.NW\R2_3H(4,Z&& >]DJLF3"=K7':A3*M!HIJM8$_E ;*\$&D/TY59 M+E/TUI .@(@9:803>U2#WP=;;*QC2C^5X_\M@=$2I)@+ >#\0*?'2Y,!UE2; M7!4\@Y".0I5,!L)\_TARG[Z$482&&+I?5*R2&/"_0-OI4"C+2THKRU+8)+'= M]:[14#(_LR^91 9O4%41'8$&B_O&T!0]ECK[>_>JR4!7C[_R[9&@EDAC#<5' M%]Z[B_&,"@>/ 5TZ_7;G(65H@L'D<6;8=%FMKBQ>%B8!U[@BE5^=1**0>2^& MM1:-&(H:XBU586]ZPH1W"""+BC/C(Z^+X!D9(QOTO MK$TX+QM+'V@,(Z+%B^&;,_=H;.B$$V.7$[B_432 D!!7P8OHGJ (92GG+H\7VI>#.H^!*, MR+)I&I6896MYD5]T3>.>F6J\2T M.P$YF+/.D?,UVB]#.)HPUHB7E0O8^YC ,<:@J9S4?R@F'5&6& W@=ED9XO]% MY1VF,,8+DE=0A\[ *J3 MH84^A!W*MJ?S?'>CV%U,.[]:7$,ZBPXE0_M?QBT8;%2YM6$'J32<<0L\N$>W M$%MRUU@JO11XL'=;@IXW3? MXY&1OA98T@)+6F!)"RQ9#BSIK[?(DA99TB)+'HLLJ4N8Z9(*Q,ZI6)?M+XM/ M_Q4\M"XA4!MFIYM*;[+3Z/U2>3^GY[W!WW+X!VMHP>CJ>-/Q+$,E)'RN"!J/ MR%?EF5@>Q6);D]XEE(_*4@?;T&=9F+0:83%!4S>!E1+P60J=[&,IYBM$C'C; MR%+>5I_B?Z'6Y*YGNK1:>Y)PNJ_Z&=9P_"XL!U>:&%^(,W03ARI,XP9">3#*L;AWG6I!@XR1.2IK7^#=BVP!@I,( MDXEA\;'+L\QV7)MM:4I8*&&K19'8#>X4 )!$K-;A"UE^5BW)YJ'JF_DZUC)G M+R0-.C"$QG-* YW>$%.;S(I)@>@?UHX/S]9>F<0@Q>UD!R.==$HYR6M-J?+Y M0B!Y)QD;+S@SUY*5)_IZ&O,RA1D0$0]A6ZJ@H_*N)4\I30@VDLNTQ'WE+>&< M@V6JK>9)66O1PG:4CHU-RJ!,;\SJ\\@UY:R6$UZGV(03' ,[*Q@644PN_T3# M>G"(F7 2. 7OQGDB5<2^"?/@R2JE'1R7Q!B/BK&)2IAK)SR&3)JV09=PLA!D+K'98I =)2FQ_% YA9- MP8"S"9]8XQ".$PSN3.&9DT1"=LX.0SURB2H99?4S(0'>8;STH\K]L9O745@I M-,1GXI7V#C9D-8:WR4U?+QXQTSBEY;"\,;+0&Z"-/"!(8@-W&18IJFI!W85E MJP+NYE()]0A'E7/ R)QB0Y&DR+^>O6C[\>Q%+]EP$Y-:)R4?6L.V!0*_$&22 M@'<64M#2M2>I\/PB[WEGJHB\"TL2=Q+[/S<["(9][F.KJHZWT)25<>!HOFO8X4$6@Q7197*G,:*583 M09R7!.$X$-+!4UBEF,F)G++WA#A2N(XR2@3TPJ<@'+4IJKDH)+@WK%I"A1-Y M4:2G8ZRFC ORJ>'D_F&GO_'*V]K<[N[#+-H:83BL2(F:FX5UZW!]?7W=PRB9 MX4>#OZRRR73/W2>FM;"9Q"#13)F.C&W@5*""-1#Y',/3$O@XUVP4Q%X9&Z&& M#C-+=4,77*.O%1&""-18'&;CDM7CXOCHD<;[4ONAD@I6TP0T6 LXU.HQY\DI%)N87J+%* MHM">1WE[#MTUG$Z]9N>YA77GP\&^RQ(D3\F$;1*C/[!(T=_Q:;=QY[&2/):) M8T-DVRB7I Y,VMXL8"&<8 XYM,#F>>1PQ5;.]*QRJ'>\?X$!F1.3[9+O_X7( M K8+Y[_= XN 0&4Q^EC@]MN:EMP=(9M[N(?,D'U" LNFG..""(N4GQW%R WV&2]=.C&#/C6#7OMI5 MW>P_X/B\KVTB?K(J'OE+_W\>9E^\#U1"EM7OY'WDFK_0 MU H.%@1Y?QRZB3+-11<$9KG3ZS"05'$[RK58.;5%!7!A(S%72A&3$.LQI(C: M5B5%A $3HO#DQA#_@?:NOB[L-MA'[PEQ=2%$PP^G.(\/:3=2[\&?/ M^W=2>-E8WC+52($X8WYN]/0IVCB4 2.HB7K3VPFCVI9T8MPS6..5\( M0H![9!4Y@*R151Y1BEC#CH98I7\A$:Y*4 <5>5+VA:/>Z](_:L9EK:8ME"2O M3($;2W* L?)T(BR(\:Q46TQ@2J$^VPT9FXJ;DP2G$I&+E(CBF\%8"?\:,)!M MV>TP@4!0L[(I&7W3H9>5B1=UBLO(Q/ 6)O6ABP+^XWU0AJ]Y]'$&WDA 2[#, M*SBKCN/(O$;!*OCV6/(]<+(GN4F+26LQ:2TFK<6DS6'2^BTFK<6DM9BTQK$= M/=)9N!P;ZUWB&J5Q9,( )L9!1E4<45]I=@:4Y)!-_UG,C7K$ENLBJ)BQ9QH& M7'//I?PZO@K3)&8C$]\.!X%WI!X&8$^E(UW:VMAA&/^TI8?2A1:,C[(;L=.N M@-I7:<0SD?E-94_N Y"\(*6P2)B;.@;"D)C* 82Q($&$H$46;F"2/-8T%H4! M8I;G2Q4#V+/\$P(7S;7VLJ/!@ [2(]PCI),LM&S.SPA,)^'CE6]Z(+0\U"H MOE^DGPPT'ZW[.L=Q_@%FUB@/0XAQC1-J-P?&?+1-H_"+YI8 _!%R)YG MOY!ZO^>/=Q9X%:#QC_,6X3R0DY7:O-J"&_/5@8^ME>8-'@Y$IZ[@EF#,D*J'*!5.FM4A9,&R2X? &VMTJ,:Q[/I6-D9.8+>%6G,+,_)L0+=ZJ08$%E(BJ@(Y/8H6;8)6821#*U-*X M6X'2,Y:+D]2XN2$>"ZR(*0["S;=UQK\7TB02AH.D8Q$U8$0#WJ$RH6&6&1,*N@B90)$9 MLA0K1R%.9YIZ@>8ZLA5T+)V=IA W%FQN]55*>'.YQ>U3X*/*(C-;GOA-3.,P M=YT-:+'@D10B>1^N"2)-X&X$.*I"A#)4(;4NHYTQ/]1;7Y*&1C?'D0E/'@[>U'X'MOF,#:AF>D[9W3)/7^.E*:6/0IK(O0$%*5Y -&E*68&98-/A3X MXMA*29&&$:?!; K#*9I*6 M4]^Y5ZBTZ"D#6LXBO@BZ5<84<(]>%B83-F7$T,8RY#)WI*Q0$;)X,F?D;:]A M,>W2R$7RMW,:4?D,]R>@ ;N?AM6 _:;,4I0-OI8. I_K!<(,^2.RH;!CVHTD/3NRCNR,9;RK<6>Y% M]@+#;RHV@ D"F*Z$J28&'C%DEKYQ9MH*1VA2B??J[B(#7J7&:K>O$A+L U?& M@YS>.65:^KW7)B>V>+IS/(07W91#B&B@8LZPYH?@,;Q?,@$C]EJK+V2.57.[ M,W'(Y]_9-0GKL'$Q\3B*6$Z_&DC![O>RJ1Q!HL=9&$M+&PL:4N*AJ>:*I60K(ITZ.WP\Z"V<<=[EDH;T,LH$3[P<:?9-R>\+O)@F\$J]*0ZYLZ_1, M41?-S,QE/YT@;XF==1/L*V]CAS#0\"8A,9GX'"C7?04 MGC/+G7FJ%E8\[Q@J9-%^R.5;E>>5\:[Y4WO92*AS83GR,@+IV$\NEXKS.1%I MHTCH* >-ZC*EV0+3RN%C/YR/N$AW<4CLZHTJJY%F#(AAA%_6D-"K!MQHE>5A:5<@:-Y$F:G2%L5V,IE*9,RFA M!?<[D0TF"$>VW2F:]$IHJY;-5H\J1&99=8-5J6O+Y\P6(-E1/ M##5I-2S(=VV:5*+(VAQ!"V.X,$X@HT61]#B"%H<0JC1RGJ@ES%MN.!GHO&E>YNILHD9SD,X=BVFN4+D#3FXYL>4( MZ?4K6TVBODG*;O LR_5D?A,N9+.MX]J:RCM$*56@9 MH^N$RM#P5'4.-3:QP+ID^Y5XHYF/7;(_*4P@SF,1L.!.Z0CL: M#L=.6(U,F\0T'"MRNMN@CYQ4B.X36 .^4&6#>(:G2:ZSKXCT3MBE)=<=!Q9! M\^N,P@U/,L.R_KW@O \3)[ORFV=.QI]&"2,<,/&% \,0$5,TL=SR@8_BJHW&$3M$RU'D5NH)&>SC=IDH%^#@-[=Y#^]B!X^(>;VY M'(J3Y7)0,(_,K7PER?(MO4KJH"'()?[ Y$.R.<%7U+K9FB?>J9\GN(@V.D*A9?0'-9- $01P,XEP3Z=)2)N-D+^\FA"T>C16 M ;4;"V/N0T-J3&&CCUP(I# 1BKNP((.3\%<,]9#ANFOJ@:?&/Q3.]XQ7@$RH79O'XX; (_CEE;C$ M;.K.6_'F"L0O(LDB*V I,:U,'@&^2A:\1PF0$CR20.S@?/OTEP#],^1;(V0! MW26T$"M.\'>!M$P:#%1/E,D8X+9'(7?@47K"I0$@0?+8'+E.E/ MUSH+D121TGLFX\I;AD,>%J_I)&0-[>>R;5>1KI6Y%;/X^ 1C#:SE*,XYMRV' M=TV9C5;X/)>\-*QL+AZ7G#8=XI1J1>J2Q9U@,7>/41Q20W3PT!5Y#V/$"AR?ZT-QW4I*W]'?">2%,$=L#H]=DZ]- M[J7CZ9"?.!3O_OI>W"M;M-=,O,Z@*4$8$C0[6L3VM9BJ%E/58JI:3-6#,57+ MH$(MIJK%5+68J@9AJLKX*$6'Q+S0E=[-:/5(CM5A5"DKQC D+CE(Z2I;3?!? M2ZJ."VV6U=A@>3[79K''6@'_\\]+K'\(CPC8;JQ"4AZ5V*B1>>S*@!O"WA/@ M4E1G88KMHT6B&RXMH<281/!])ZWM5HU7L\CD45+,OF1 F"N?H]KO:A4^U34RG.)(G+S5!Z-]V[CYTLNH=HPJ M15#+""ZCE&(^#M.@BP86\S.C>D66#HJETL''\L?9-B= M&6<[T NO2:@8?E<'2F%0?OCF;G&BP^:#,RHHEHY-(3-XRH[P%I*A'OA$,P:K MX0.&*@4$(>]12!^FY:LV(_F4WG[ M;*P,X-\7R](4&2<,\:!(7'4AYF/;P<]I,4N3)]T>#4-0QVJ,$A;K8L49).&" M=.ZOGZRBVI97Y2Y#KF$;(S+S@HH1YE<,:FNRF9DI(X@.&)\*LE$7<7JZY.I" M^H4%:C[[ZM>H#.]&(36MS>LEYM@GG%ASG*%YU+N0GHOZ2HJ,6K^5!X-3!UQ9 M/672U%E&TABP8UP 8\S-G$7F1K9+NJMJ5<+?DVM->KO$K"K:.\1C2-J8]FQ: M*CQG[5B=C+_CWJ@E6 =_JPC@2Z4>J;1OS!@V<4W:5J@5*;J-WY$R09_#\IE8 MQJ.2$\LIW*G D,9Z'MJ >TOARJ0\Y[=,])*2#JF.J'+6.R<+=6F62+=L;T*. M"HQ(3AD9"N0B);K80M M;:Y6&,\G#";SJY"K9FZ#-MM^"L16L_IV0? (F"EL)/9^$HI"A7F*<2EPF M3<#HQ:KC+$O\D"P"VP++GB>M+GMNX1 U%FV9@@H#.8W(D9-5LTE;43V7J$KN>:P3=NR$6^SH5A(OX/?8,%0!3BL" MDU##!2H-.-1.K!GB]R01QM+:C.'SQA%@Z8?"!+R0"7*(5C#Q4"8HJJR198FP ML\N:T+_Q.[M)"WEN(<\MY+F%/,]!GK=:R',+>6XASXUK1WFG.?FADK7D!EMW M9@88-S1'@H=9T1PASE4*)34A6D/IN"#NK<16Y_!*PB-"S2V=W"K".3#E3Q7R M,""DF0_ "1@123WU/%P8K90A9A4JQ0^VZ:+Y159]\D"[P10W^J72D,"@%)&\ MZWE3:I1 I$X9^8=.,J9D-7!O;3J5(ZT(<@>8*DELRN6GLZEMZSA-PROESRJ% MY?@+RRB4Z,2=H5+$4LTDQQ_H28P!59I>D:4AY3)<[$PQ= M@ MPN$/+-/@A"8"'2\Q*J=?O">=9N:BB?"RN%"TJ?ZL0+#F:3"O;7>H2N)=724A MD^1N_CTO \,+'>?P:@T_I5I<%I)YUL8 M!;E*DFU%^(7+_,5,2&Y0%VOXJC "*LM\'C1&W5WA_%::2)"RMHY]E/@T/TF1 M(T;31,H^QZ3$+W++I2BW=61/@!K&(1&,DJ[(0M.7RAY#1NU42D&R(L-BYU!6 MKO37G^8A,[T/.X=G":.Y7J00SF38JE8^E3S MQNR8-CT1-XDD]!P^$6MO E/?@TUG.BV8Z 7*!L+LMR(8F68_IJR+SZT2*1C! M!QD<;=JTW 'E[?T&AD^&_=I0ZFT(_=E"Z'-V F]M'\G?./S*-("M )XMKP[' M+]B^RB>3%^U19 (A6VNJ9FQZSI"Y:5'=]IE/\M]*R9>O)@ B4,191!@ M89',^O4OM[, !"E2-D5"PHVYU;)$ F?)DR>7+[^D_$0D[:C!&(2_+EQG]A+K M]F6;^T(5-I7*,IT*[-9]6^MN2!FIO?PRX$F%RE&3L0NDR-[\TN\[I (#>(;; MV0 \M"(3HT#S?V8*?-",(2P$"A,GK-OM[=U9HR"._C0K7NUCY^PRTC_'NBFQ MM _%+0:+[Z8,;N12;0M, MWK)%0)(4#DJ:GDM?FJ%+E8!G$[3)"<,Q.H!+E'2\UH^=&.G-;BW?9L:WO*Q'0>X M,-&8@G/Z[A3]BT^WME3GBS^2$87;0Q74="%*FRW3*AC[V9K>TL,L#4*LNLZR M%':GP(8IP>AKOH1=,S(=K%^O76/<;>"&&ZC3:Y:BG!HUI)GTH^ RURP:JFS> MP0^WB]'E_N2P_&3+$+]IH4:FDQ'J1PJ=('H#>QDJ9* @3 0SPV/&D*Z_+&H? M)PF2:*4CB>4IW=:(&!W&E?SKBHKBZ@UBD@8@M7ZE3?6J+*F)QM<[+MF,1)34 MWF2BQ)A^S!3EUO-*0L^!7(/2PY,F1ZNA(:&;K*YWI*I6S;,K8AN%VTI[&03E M#PP5 )7-<^J??A29TJ@)9Q$P 2- ?1$GSH2PQX0U^3D]W7+%FXXAG*@>1UKM MMTT.ZY .7?8NB<5;/>?W%9I$MSBBMY@(C_!G:*$N]&I MM@8)N76PB1"E&V-)/^J.B%C:-U*6?GB67V!N^\!Y"?HLW(C$ M]EPU6RRP)+)]ATTLDFJ9DRQ&36D*(!7:?;*(VMU%@N.NQ$G\\BZ<%( MC=ZT5>Z,'%8"Q&^:KV*T<$YV;#I6:$A\O8.K%E-4G)AO(\1+F01E,0&;XT\D M-(*M^AKK-F>C# D>R',H4+=,IU&!)NN0>]E;V#?"/K!@I>(7#N?,!J39?G 6 M90%R_R<)3&-BB%!#! :Y=5NB"K\2#8IR@-Q-A(F!Y$^6;FEQ6/PEH3NBGWEG M4""Q!AO^'/>I^,-%XBH;5%'!E-8SA3HAOACN 1B4"A M)LE57/D,A\) B:"*'-,.D'Q$V:BZC"[U ,JE@1*9>N M)K+Q\^L1!X$/6Q92[-9\957P*ROZWG7@^ X.[\#Q'3C^ M:8'CDIN&1; ]_()639P8.;L MM/MU6Z=&)K@91Z)#06D[HWK-F/TA.1$$20DK-F'@=B.GJ+%M#X/D>G#B1^QW MB5E^F=SS&?T^XI>TABCW6\26UH2B<&D7ZXU?J6FRQ#O!'RG&01SG3*Q'?A"! MS84;$$50AT:99A8=@#+WW,0U-DVN@R1['GO#Z?WW%"2C3 MV_?3!$1E-J/VJ_IW[FMOR6Y&O(^._XKACA8RBQN\V@5I$3,YD?M5_*>R(,]6 M8T!A*3^7>0Z^(8]VK#@:M/!P\GB)V'H6$XU\*7VA9YQ=$# E>N;*JK52 M15A1]%:_3-*\.DG](=ABE=Q&69HP4R$U$2I-,V+MD59;B<_ )4(OG1BMRF(D M7+8".W4X#7/N$!Z,'.PPRKW["7(S-0CT78FAOP#$[1(7RO<^CN!?T.$[!KTL4(GA1!5H\> -P7[@_06PK%+NX8@O>%0J\D M_C!J1G#_@]LTXZ^J#&--T=C#L%T<][RK,;YB8=SUQW#$V.2H-,,344M;W+JK M;0T]%$<6(IC=G9 P\X%4>6&5*P.(,*:&W**VCUHZG7)7N=%7?<-R*VL]PKBKBHN^97SHAP%6G:DS#G6-975:NDXFF3P#7(&5<3,:]B(;O&W!I?(9VD26KM;*-REF029#V7B M%ORBQTLM2L16$+.(7*RVV=T?*3SCF$XAUX)+8)73JPVT/D,TJ]"FIS27.%"I+#GASZ?,-$06^ MT"GH8'*13A/ ,M&8$L=4R8A9:4,[^?PGOH)V)4:TJ0$Y8<0A5)@3N[LR-JY3%4\U0L MMZ])>A>K\$;:[U! JI[6#TL'^D$I;6E-'^A8JQXVZP =D (7+-&=.U!FL,UW M#J(2<+AU&DDR'W]?6SU2'NWK$/-IJ3)P&_Y(!%LVKQ["=L5P*.PD.E!K#(3_ M<+4Q-7RA>$ &SX?MJ]&LNVVG'$O=]#5C.$O 7?\,7L8,0X=\,=R"NTF0[*K# MZP8_2VPH",*)/;)<.(9W0[%E%"BC1NH\,$O/4,_[]W_KGQZ^_O[_MDRBJDC" MY9>-S1140TDV6NU6KPC>RH"M$7IGXO'F]I!BS\46L9*BP-!WM.S5$NA'$:40 MTY14:II).(SS$A+=JPI3[7SX;B:'RH+3NP1N+DOU8J@WA(S(<6'$NF8!<[NK MDMZEZ$ZL@6U4$:";T6F>H6&0?,67CW3*J_&%%8,*8U$+$[W#GG$X6X).>F@Q M];Q+V$7JQZ9O54LB8K!8@:?AO4O6D-,5FKX&SIUGRUOD*Z!&ZF^ #U*?/KR* MG,.;CL>Y*J3%F/O:#A/488(Z3%"'"5H;$W3:88*VA@G"F4"(,H<_<.3A5X,9D-!\ M]'50BU\5!^!P3ER.3G=#30?2"(,?%.UT_1AGJROMJLUV4QL9FX^T3Z'VTO"; M,D%/6R6.A) CI>D;,=R,]3$N6(102L;?(D< )EG$].F$.B#;]W(_CJS6A9"1 M!93VUIU=.54:VH%HT;P),A ^*WF69I4=" SX47E$3#U $FZ/S4@(DQ$W#]." M7.GDJCL+U[L*.VVE&*9VRT35^UK1:RQF7=]5=KZ<&8X? MI"] C*3*L+V+;@!'WW5Z/5>N)/PCFQISPPC5(!U\?>%#;/ROYUWF_/V<(AZY MA7,*B37]%&4T*!HW@0Z"K70-C6B=A$#-UEZ5^N737A-36+J9TQ-E:RAL?>T7VT=G7K8XRL?,RR2F85E97'RB!(J<%=F(,H, M^90B.QWYJ:Y<1>\UGK'USJS@JQ"S%4IY6[X8QQ%T\WW'&E^)*[WZC3J]IP\R MQ7U-L) N%T(<4Q4;6VQ.;^N'J(5:2]8?V-EYQXJ\$OT+PF!6,*)Q%H7.K4ZA M56:9M S845;7]HL=YMMF_GVA2O,0=CN;5\+&.FL,YPL)IC%S1H6U&)]D#2! MR?:1MK=N]W%9*<.S,72I!+-?)APR)PU.85^X#4-,NUG3T#R$2WY9F=7PPFCH MP>\6YR%Q?SE%MHN4CY!%O%$T72.%(1AGZ8+*XVBL-,UFC<^,J[X7+S(:2=5, M-S:ZL<^I5M9^R$T]HQ)Q;&I,1348.A9RT2@(N>'[IXIX1G'05DN>W(ENDV;W MK32XB W?S7XWB4F@P2$.ULU!&3:Z '9OT3!VH%5UW3V97=:9N M,A[3*P9BH7?*V/ B'N;Q-LE/&5JD8^%L;SV;*V8\X\%8;[OGR@'K:?"KF!^4 M,>+7:X]#WL[WDC,3;,&AM(4+438^D:CVTYN\F" ML!8>J'QHJ#!'JNM,-#;=/A5F-?6Y2$J[./(9,3VDDLBLD94R;'8!L\C1.XO1 M D)?D;A!<(_H4B?0O!@1D@FL2$"ZPF-3HN[@*QL$W>C^Q'7C3J$5/G&_!UV0@H*DSV"<.<4X'FLU4PBP-6+B)= M;;,*G%5<;^5B^&]"''W<#-LER\!@#(8/%[P.-\7K4N?8"XY2ULM&X->JY@*, MYF$S#8M2(#-;)8$N+BMG:+'#9W51@'MMX,&]A9.F3V]): ^T\U4VXHPKUZRX M!08FLJ)+%N+4T*>@^J/GN*+@X/>H$PZMFS1TL?/VMT!BQ%AJU'0)C02[B 1(4=G++;@Y*-8&8D(W6$7O-J19K0TE]U$\=X\A:=F[9:_P*VMC M*WFJ+S2MI!I=>NV>+;*4&+2/Y6PB5 3MIJ/E?%C0X>?]/MAV&= MO*IQR,B%Y+YBW0Y3T&$*.DQ!ARE8%U-PUF$*.IZ1#AZP97C EMVIJR6!9FOF MBZ5'32%9W]#GM#&H8HRZ34L,:VN8:B6TC51Z;"!KCZ,2<"5(.S-ES.L!L,44 M(W\54YDJ:Z'/19GE)8OJFU9U3J\P8[L:W@<$'CN.$$4@B/'1&-L<^:NF1G3B MA<)!5::$A2BC[$8-&FSK%GC';*Z;0U36#Z-\T7U246=<-*X@18+S^@,#FX;3 M>:9A,/HZ1%Y9LH,Y@:0C3/E,(4,D+Z_DHWQ$#X>D&)W?N935O!).C,1&\8@X MQ=+XZO@;^ -V#=Q,W!T:LZF)Z-2VW>PX>HU",[EPX)R]"VX0(UT8/\#L2RU/ M1&Z6A*@( T[!_#&5-X[C-(4E$0Y$'-S4YZ0>S@YOD5VLT:,1'%2FH4X;X3I@="B=LM]+*C3!"2(+A$Q*"-(Y+,%M5Q?:INK/.E4"X#\ZI$B+'Y!XGZXL M6=]K;/ 4?1D29R@HR+& O\<8_K=9:C\EO/YS"QNY8P*.%0%)@_"A=6!VB@K$ M)T5"#4Z64!;:X7*R!PYOH(#*0*5,03-?(;!'@0@$FF];^)$--P]5.(A$T8&1 M=2*U5KOD[KO*ZM%\EWF$VQF0>)OH(7TNY6V/"A B3 OHS@C.L7; 'L>CKUT M$^":KU=BV.HFTS@ P[BBH_J+-1M6>3(5,-/JCN9@2!_H!@,LV)I]+%Z:^JY( MZ2@.(N%BCKG(C3Y#_\;J-]R0Q;,GD1.P]VN,9I42()PI9O>Y1#?GQ)+I_RSE MND[W9R%;#LRJK8C@/PEBH4N\1:JVIS<0\=H-!&(7J0!.P5B0'0N\;55V%/TG5!)&\U=4?M$MX,C MF9#>T3H;EHT(W:IZWMY.)*+P9NS (/3-DHFFX"5*,H=BI4!*#TSSN^G3DL%U ME' RC*Y;=WD$\1GW5 M59Q>^8CHT^FN0!,EH;0\82"PXT-!G5VE.Z5?'AJPY M)%.P@RCL+*:A')H*7(%ES9I/VH*S]]OZMA,]VN[8-<*# &A5F)-#!@Z_I:X4E#_!)U<,O@T6O6[[ MFTVH7Q5NSHP,H (^Q_ D,#/*L(PY<8%G%DYGA1S>02DF3'P('A[91[DBX^)6 M50:2O$5L:@B0T%Z;5!VDDX@RS M71PX6<:@8 M42BP8G:1&1F,U4T99.%B$-&""-P+#4YHX)A,['%0M(FOR%7=3%@O.%0@UOE! M1.4RX\#U;9:(F<;_UR\4QO -79X?:]55G1"'Q*$ZSHW=C6J 92@J70S3428D M!=9>K8S;/:ERQVL-C\!V@S=J%#::,/P#'@8YDRD66/R&_=- MXS/J$M%P KL,>)9IH;E-/B,;HI;\LT8W&'G/1N?1VR\Q5Z]:S;0RF+MF@ M/>]]F>'OT9C&T O87I1D7'GM9&5=Y MRVCVYI74Y=#MV\GE,K0R.HY"V%5;CS3FY:I7O@O[NOV.;D.>%Z:??:0="K+B M.%I[!@,Y/4Z2J'Q*F#J8[;QCX8,:U+,FF!YB9?KYOT M<5SNIHQUHYD[Y8B_;1>N$N*J=YQ67!HWI5-U7>NIFSW/I$E6U&U#()$# QN6 M1J\VX2_M&$)%!(U:,<#40TY26#AV':A=@2/ OJ2)[F%"33A)_4FUQ'2617FM MV*I6[^1KT+N[ ZNSP"V+4WVI,#7RD8BCKXJK>^A<":\F7J %IW&VN2\8)^'* MO;%&IUC"$TX?T_GC@Z9'4D]X6H2'.72--0DQZCA+&Q$B0"C72!B[-"90XULE M-%5A%#A-/%.K5RVF@<,6M7R$$P.4<)X$L,(RTQGW&9N=;FL,*D>4+'0E7"&+ ML*HOLUXG'6JA5"Y?N525SB4>"_5^.MPE7:6EQMHW>#H/,W8+)7%UA;4.2G_3 M,365.$*LKWNOZ12=_6VA7YI:7XB

51 M8!;N/?JD&YK*\#+,N-B53DWUMAWA_L=B^Q"8*6"Q@ZNQ-%B[ZF, M6\/AEL6T2-A9'V.RH7JEVLN3ELP&Y,#N4H@Y0DE6B\%OUY[053$<:,X),=?8 MQW<*NHQ*T)VWXJNR851DYI]"V>D^ 3DP8V6:;#'F@X]QR*MABWXCVA)><0%[K#>_*1<7(IV!O&Z&L3"J 1AZ>4/08J^:!2=B*N56L!OBLF!N&1=,%A]#%9G$_-#U7#%?W2]?E74VC,\M'E]7]A8[U MYDEN::-3VXZ,7# 4#$CAER1?6O*%DW!K)0B/3^>QAXIJ MK(>QT*T?V&=7&0HVNZ ;TV$D$89LJR5T*E=D8B!6 HTZ!S:0I ?D]2[)L4DO M(D(J4'R6/0CI7V_)Z]UKW)0=IY536NJ*>=\Q/QL7DZEPI*M:"_6IL]*>X+#% M!\#%RSEL@Y6PBC0"6<:Q"SZ)I7\F:1N]F@+4MSPAU)<-;GG$'J4LTWABT%T) M*(C@W09@_G,ZO5(+3I^=8H4SG7;[-Z-J&+2KB".\R*)A:65_FH9TG?-O.'0Q MSI0^ZW TZN+DRIH9J8 &E>:M=:XPC=!;>M( M<;O2:4#=9MX!7A*DZFU#.NFDR*0/SM5#XJR;?A"V6;!>=L4\!DO>+&WN8N.% MAN[EWB/A.E?[KG?P.(C?YNZ5V81Z;$KB)A;NX."P&7A;L8Z92TBQL3O#+JS@ M;;=-95Q+)]HJ,T NE/;@ R-NJ' 6C0YME+OFOWN=NPNM20MZWL?&Y<^1?@Y] M*UME'XH96&E(*3PSC-,G^(U^!!Y]M*))IO$&]F'L ?VOU1;X[Y[WWJ*#&@*( M,E)FVY>9L0S Y#)$756OKSE$42T@% M ZQ>KFJH2#=?9U<"O=B8)03CRUO4 =@J5#L'0(E@[!LC:" MY:)#L'0(E@[!\K00++]-L% .'=$T04>6N[RM[T_Y3JZ1TOXVP(K_I'0#178H M7LFQRB5^ IJ)5/"A$1&!=X=U#SDCV]W,@6 BU((1+5Z[!GAH/[H2)Z)G4^*( MN242"M(5G!.@R&(=4Q)AS-FUB\VP=?$MV+FYZPR$-E6HR;>7K"8:FM:&UB8O MFY=,,^J\5W<0LY/1AK$O/I7I%N8V\//K9O.J]:NRRGYAA'H%)='H$WLF9FII MQ!:+ 1XO4;G;4*B#9-%8_^4KQSC_=(:A-&1$($V=FR1"+/'P1F*394O<.M#$ M;[6:47=!'*4"THC*AC.=J%ARO%-U&:YF%Y$J/#=W]&;$ * \(F46,6I+L_)%6GBT-:H,)94,.)KN.9=1#8!@528)>,J'U.H6H\+ 3!<@0X3FOMJPNZP!$S&53S%*@ M_-V"P@U-W1@H%H/@:GZ424LV[!ZN._Z-NW)7AFGB@\,R@Q4F<93"22RIOE5, M$R,3UK%0HG.(8H>X=F$!W)2T"T^UN#UJ2&: W!KY4.L!XI(#"3Y.@TXT]*Y* M.KNZ9G.9F;:0-:*(])*:3A<=&M=D/ H$99],VJ4'Z@T&!$WQAX;HK"P1(A2NJ @?-5L2'B=RV1-M^Q MV'R+L"K(F&S9<="Z7[/[UAYI&\:B-"/\3 T&74^P"PIK]A<8_7&[%IJ:$'H= MX3[*D,HQ#B0I*=*#ID)0:,2'-01=RXVVRK49Z3=(LJ:[HC@[QSD?])Z.;BG&RQVJ#9%9X9TN5-,DP#;W G+4W)-/#YAP$:9 MB!]/UK/6E/:5S=A$^A"#K.KZE\&C=7QB39'PE9$3OE38Q^QQ'A?BV.0^%L#H)DZ3R(^8)FQ<4Y.^T4L;O@?A?\%3:0JUE93:GE M;A8E.2L?XP/$_D^-2''!HUF6>\0D79@%=_ #*580+'.#+*YB7,^T%9_[:.T M;'PPQ;4Q2GNQ=X(!TE:0AB;=FR8+'0E?Z^I$APTU7!46RI1/N#T?&@T?#CMHZ*T^2,R#63FGM;,DPE$S6[:+J=RC M*ZOB6]VI"OID>7AY&<^-RREG23F:GK- 2$6[P*:P-7^V5J=CH?E=O&CF@S(5 REQ!")(F,6BL/]S,$>Z@ M,QUTIH/.=-"9=:$S@\,..K,UZ S./ KAY-P+W#@^?-'A;?9E*/O2,R4(U,GW MF>STQ)^C KD[UP@B?S;T%6MZ'SL*=G]"H#@586(P2M 8F/JK-.?5:HD=!I8**:V)8LK;(AT>12HJ%#:UPY&6M,T+]OAIRYT,P%+@'( M(K>M3?V KQ0;DB=?]HM"!5H*\&" B")?K(L&;!P"U9A0:(:HRLN,_%A;.K.X MS"; I ZTAGE+W.641+5K@ZG^^0'B0; &HR).VF4V+9>I2$6>T?.N*5;>*(=9 MI<"#"R0U7SFY_ [P3!8%_DEIH$*"^A6Z*\W69/656T%DLK1$T8UY(3Y*"]ZP MUGUUGY[; @G6@"A?A3O;MYB(@-9;D^Q6OT^NN3"+L!\.1]3&!O63>1P84I1H M"S/JMAM\0,SD5>;B6X)F&3T3WL(T1>'HL)5D#*4XELG,-,*,$2I4/ZA_12H/ MKI+Q@8A9ZO:C]TR/)>X]ZU0:"HP U7$I%/R6MD-3.YG<[U2!VH [%\X$!CYP MFTQ5ETT*VO>Z0UYLGL7P1!1O2V)NJ#!8>U7>0")*0^ _FO?XB+I9 7EQ)%$W M/Z_G:@QQJJ(+:V*>9(8$RD;$Q;@6<(@5BS%FIU%(N8)"0 MJQT3.]^V;5N% -%8OY9ZKV*M+&')TXSO%2X>4/,1$R' 6=!%G/0TVXV.*RC3 MNT72/?T.75)N"MWC><][IP/YQ(X]LXA(M@1YK,LN<<'>&[[[E%H(" A.<'FI MX@^1'G"47<-]%R63:!@5$M1M$L+&;,2>8W^NY&YH,DD(E2P^D9AMB$%)'Y;-6/UOEO6CSQ,W28[7N"R3<@RTH7V68MC MQ8BQGY#H/@HA6K6B*ZN .O9@UML$JPH<\[CFZSKZ/2T+SD!8VA/.6"V[&_R5 MEX._E@@9GM;%X=N+8D%=?>>MX7ZT!DLFNAW7M"5EP_@B>Z\Y&3]K[E2[8;JF MSS -(UULG2XSH?#'.AU/M2>%;=AV-:Z)Q8*A%(PF5*- EF#%9EK MPSVP%-=%.OJZW_'.C\OZFC#-A?A<&N"HU0\X+1D:#+VN#6L3&@N7J7+&;/>R]_B*0]:[IR3X9* MDQH'#BZ7+5@76.\W! !] ]/(">>AT.:F2Y/*N,81L790X1?"I*A1#]Z2@\/7 MGQ'I\9[?0K_JOT:$+^4WUMU92?,=8$[OYY/CVEX?['"S:4:GK_5$'G\(U;49 M'/5.<"UJ\01I="7\[(P-9'\#M?;]7:_I$?$NWS)Q)C$7NM$+L= MV-8.U(AM-1LDD=E*%WBV8O26K*/0.HAB!U'L((H=1+$&4>QW$,6.W:M#&_X@ M=J_.U-G4U!'3I8;<4H@"XC(FQE )0&,X9W^^\^ >QP\(I@C(TNP#%#492T^, MF5#TVDVC4*?NPH0[E.2VNI&^ )Z$]+,SD$7N Z#C,3;2Y^L CO;[.?1#V;<@ MIGHF) !(,_I +<@C7:&DY$\%V8B!%TYELLXN4+1 /T+'#CJA>@37IA&JQUD4 M+0XZB]+MQ[;VPX%T.-EH6VI=(EX$CA!UD709MIL);*3)AV8$X =UN[?]T"AH M0WB63_G2F\SNA5&HV'G61DXM[$+C($9_E)%D5[O]>@3MQ\FQ.2.9J7*UCA!^ MC1O8;<66MB*?YX6:NKU:;)_+Q5;$J6VB%Z9W"1*HM"V;^[8T-+FVNX!)FCI( M=JQ@<+4[AQJ=_"A)[UIY49\NE2"KF7=.]QE44]*@$Q;L0%IU@@T9<:Y7Z$Z0 MJ!&^-B[CGO<_:>GE$TJ\XU\S1!^G!L',[\MU>PD\3T%>+,DF(U"$$&,&5,U? M$:7H-!?M>2W;[H^-RXT19:?CALQ3DOPUQ(,/TD&1J &X"'])58HJ0+%Z[,)(U#:9F5$W.U M :JV39%]T@5NMN+) .X4IX5-[QRQ@H9SXVQ(TR^,],PJ#]IPD:F ,1AIR(JN MC$09-QU2'7 K7?PZH4-402E]I/H'EW;+4<#55PGTJ+*KS,Q""OPNXM:RBGJA MZ0:'.M0994R#*BP;[I,-G'+EDT,%MR;WCV0K)L(CGA>,U(,?Y#+!%42>GRE3 MJUJ(E,/JL_P8#Q7Y%=08C10'K/B=YB[1'$:L\>TNZJHL^YL.E[,M\VF&7*Q2 M0ILB\3+L(J,PA7N7^.V\J*M>@VPB93=&_;-_-9155/EY9KN"A^&$'%D,U+$)O6U['@W,83VGE"6Y,? M?>GK8A6'/=SBK:Q$">Z/=XEJI9#7-B[=&O1%0>SV[U'V#\W$VP#[E4?5P%"B M[I"A57J'FFV91+,<>]W/?>H'/".&E#YR6IE"/F.$BIJ&_0S>'ZL71N(;5HB[RR./F2X_6G-K:CZ)QK30NR!VG M>RI5KI1=9)EUWFXJY/F]7?AGFQ)I>R'05E/S@'):QD:GD-=,EDC;_*-*_=6U M'('!X9&^)HVCHVDOWCC>TC_!^3$,'8R;S^M(:979#O$<&F92 M7=+%Q:?<3#J]2[S^R5_?I**(#CG\ MC1[SO_#1>+"1UC>:*L^M/B@FV$-ZKH),*A1@#'"5;#"*14 MMP:+=:(#7@XM>:&"J?&,0H76+'>3S"Z>UB9/H;D[VVY6*/-U;Q7BE^F$5%@NI)VYVU_8]LF*;WZ"3 MFG K+#6*J?DY]CJ'WQEN398[7:#"R2_NJ\O%*BW3!M@ I\PR;D)CIZ\+*6*3 M 8+SD5#/"PV*,G%2G;^'43@Q4G/NBYQ_Y*8+D2F\2]V&'!W9=$9)V[IB"IV$8)!#::75UCY1A"0SGV&%8"U]MB- M/,LZ8IZEW,K)-WS8)3W DGRYN09)/U!0286V#!;,_.;)D";6@C:O)@*D[IBTI(CC5S?5,"&)]-=9AISOL=(>=[K#3->STH,-.=]CI#CO]U)A:Q2_> M?]H"IXNAK5[6_2F9=Y*M-,XVH@5KC;=,:? L?FL$ A!:EC(=-C@^/-;^Z760 M#0,P^ \^?HO5W+MDAW=P>#B0,-R,:J(+IATLF()%R,.F44ZLHAP3DQQ+P(I# MDWQ$4V=PU4^O:( 'WT";'"?<,#6?&[/@5VQX>8%*I0):,#U=1R89U/#@!WF! M1X\A+X#OLP\TY,6Y61[$+(R)VAA3-'!$-)WEI+#N&,G*D0@)P&RECCC\* M$31LA+.-J1,Z97@/M<]8WMZ.FQ;Q@-'!RR7KG*D#RH7UI M%E-Q7_)J?ZYBPDZ.7A%S@@S!V@9'2%IHZ4:_2Y:-N)'<0F>A&7*;<0CF2)\. M@:FY7* R>^V8%\B3;('YZX_94,XY02K=,M#I7>OV"9Z50U"AKH!@'H9=+GRL MIADV2Y@(WG2CD9&#[2:!UM)&AMR6"?P,3RQOS]RS[9RL,A$XIK NK;]T1#.5 M<#7Z0@=.MUO*%(1S/)>*B8@WRED]WEW.A1%H!S,"#K^CP.%PSAC5U,Q$NKLT M11*E<1L',"G'A6@IXS&SNZT;53F=E6QXIQ;0<9E"*9 C%%@N*1*EUBMT5N/* M+M7(V7,+]J(AMUT +&QN>#Y4TJ7R GH9U &5"C*@/9V*Z6(.) MZ;X,#/YF>P;.:@9#5"#]7WK__F_]T\/7B__]5T*I="3"NBZ"\9BXF]B$:U6D M\]G3V&7WRS=Y3?S(=*4,;"Y93O[FS)L:R[%L8%I2T,PIJR' M'Q0!M4U?L:OKCW^]>O?&&\#*];V7 EN^UM_^Q-\6Z/(KT:QB#%2^^_/@L'_D M>]V!NY MFVB1VKKKHB%#-X I4(>S6-+A+O6K?H8/UQA9+.01=<):1W*K(TAA MY#>!$]950IC(=AZ^7DR(?)8F0C*)5T88":U^RR3Q8UE=1RYWDM7 #)_O"4P% M+Z0WDTB-P>:SGS=R\)%O:B.-;T#0M 3Z8IUK"T9N/K?Q@I%/9%M+D;10-Y;U MO=EDGO-/3.E)%V"1<6;;=(+T#9V(7R>9SB7M4L(O7 .A+L0Z/T)I- +@L0Q/ M5#Q#NB668CY/7"&F^R.0$5(5)X+J$VGI#; F K0U,4, AX\EG_''J$=()7#KPFXHDK;^SX]KJC@ M>./TYD:[".!^8-$RUVOIF5,RGIY/_9<-E[#+?TI#KP9W:@6 M$KO7VZ<2V[&[>>Y)J]/&TI9*I;DDPD$4"J73LW6EJ+$BU0Z:&F=4E34*=G O M7-NWM_H1VXH5W'%5B,O"\7M8M QB@KXE_?R MQ;OKZS6'1(C,DQ2=T2"R2P3:,^TZJ[%B)GU6SZ\:.KA#0GF M)6@S[KANZVX:A\]Q8'Y(=5QCZI1S&ZD[9W$81]$E[+N$?9>P[Q+VZR;LF_+0 M7<*^2]AW"?N'D)WMD6%WB7:P8Y\M1T-2/ T3(82 7'2K.3C@,E0U^(?LO>;: MG*)0%_J*8@52QPCZG%#)Z]H6VQ%$.UIDSVECL-8[90T#2RQ*&K!.>9C>:I5Q M5VRK='')>M[[*.&VG$M6CFVP1G^9LKN)SEE2>M;?)A@; M"_+!N:.3P1-('0V69HX^81M7"F.TT./73!!PX, /UT0G=6F43 D&VBKA+FJRRS'Z(DD0%&(>'O]$_\K0(I%Q' M-V.U*IX0#-\THT+_XIQ+ZG%2RAMC@SZ\?&;4/*@'S=SS&@IMU5WGY!2 B?F&T7BX\;JI@Z9#E=N:CLI/),4BX1 MN\ZZ4?-%VT\5Z9L0@,'Y+YZ[J9' *BC^0D[/D@S; MB##_J(@7BUIP\[V56XTV':"FV]>6Z 5Y2-!,CEWA(W4L*VU)F;:IAH\>0)J M\&BI&OPGT1]^0@M142U1R[3A;Q;18PO"[$U/=R[7A:9CGRV1.(BF7&GI4L3< M.>W/;'A2MT'3M9#)]YDD[PFF)* G_%]?TT7!R4X"0@-A"B948_!@$2L5:89* M/5A-[4&@SZIA)C-#HC "L6DC/,$3'CO 4.X>3=TFZRI.VW!9@FMJ4AVNLI7 C6SYK;5:>U\R*GNTPC5-X..KE MY/P)'-GCI4?V W* 70=C3/.\->C,MAW<7Q Z+G79%:%_/N8MY=S'OMF/=Q M%_/>6LQ[_9OVM/^B"Y3ORU >N[+M]=JZ8,OVTJ?+SU_ D7RHN7AZ_ 3,Q9/E MYB*S4J+.^$PU+V#$%X:523H:O_NC)-SL9TD07%L")^]#4'!T"7WP*R1 S+Q/ M93::8!P 18B_K"$6>QE16UHKV6RX,!7B#] M0R8I#H6&EDN*(O+@I' J!>VCYX%[M^W6%AFT,QP'!03O>^\N\\?7#8/3U MAA)(!S*2,?V_UX\UKG27BS+VWJMA5@;9G+4<5C" M7,L6:C0.[WP\KU#.*B(8JL( MOC+?@*1AL+68+F QG2BJF;GFL'&]KX%O$B&\ %3 M_T\%'4P;:K9"\GJ&N@I+/[)@QAG.-Y8L\TM:4"8)A"9IO:+Z-2TP^&[D!/,@)BVG8^'(&L=*/1=%-+,:!+LZWE(M.'Y)& KM\@J1W MTBI%N-08C"*&*Y:_A-IR=<L56S]%^_=-R%.%SZ0 M_L71,8$TX";#*(MO*MS<3]I*-\HJ%RMF8)LY:-IO(847-6*77Z]UXSCM\([< MX=6K0>6C=GP2/W(';TBK98] E%$V[I0P #,;A3MPG.'BT D=Q(/>PPM^Y2G! M2H,;T@7<'8:[[BA&"S@\N@6I!H?C&"]*4!.-4BQR&6C:1N]SF1.C8Q]A#E
T0]G:.]Z%KG8!J'O>MG!T9SHGHRB\ECW1&8JD!$;T M"%HDJ>F7@B75F /=J=M7$*HY5M:'H9H*Y%@"4?+W\+_&D]>#\-TNLA8 M-PEUC :8]P&4X1:\%M47I6T@%DK#6X]"WX*\PP>FV@+D=D%4+X+JIVIN':E7 MA/X>SE8VPI7;4GJP4J=^A%]=X@UD]L1P*WF$7/K"F3&2<5T=>Y\L(8, M8VMUB-(KV4/QYN%AMKE.Z2A1MHVX^J@66/;$6@Q9&(^FIX.OEX7GR!3W=$V( MXC(0'0E\* Q*LLH++5,1MG449#TY^S<4>Q7ES:A((SGTX.KZC.ET-!Z.OUS\ M%*9WL&(YVM$'8;),8!S3-2]%0^0\T(]):&]X]+ZU]M2)L*<-F_:RV>\-MO#E M>L$QHD0(/M=^B#Y#L,2&4(,[7$N54FL?Z"::C@HV;4R]IF+HX9RYA[YKCMGK M#MB3I% 5EB54ZHCB;,#7,;XA!.U%1"%*ZYJ0[:E\7E!J(:K6*3[=R'T[GN#@ MR^CU^62"HW0QKQM<7,:K4I63:!W/S"@(\Y8?44?ZSDGP&$M@BHFNH80!CE8J2ESKTCKXXD8@ZX\C>2#YX;S.7K8L+[J?H">&H M!Q'TD%YP#W4?L3)P,/KR7:QQ/BZ3GS#4K-1NWC%9,DT9,^!\*:0L.EYBB)%D MMS_DW$?J\X)4,Z'=QIKJ)^KW:39._ZQ)5SB9UACE[.+3:9C0,[Z>3](I61,U M@+E#L&^KY[>)\3U\23N&]A837"X]Y;?IN,*?SU8(7@NPDV6@M"4E.T0&/"CTNMVF^MSSAF4Q2@E29B% B)1!A4(7;$H<&)-DMQ8;!.LXYV?3 MJ_H.N/4DP>]'_#3EY[&$V#[-2"6K#UHLI*;WCD?S,3G5E8867;,F M!B!=S((T4A0;3VEQC8!(MICV40;>6N;K MJ7F*>D$;UO?@';N;LLM;:C-M/>D&]]%U(!6AD0P[06,' ?1P2=Q+HS1)2Z,R M6/1T1A*]$+./($K@:%+T6K5.3=@_.#8I#0? QC9\;QW%^?SG^//I^'P:1KE. M8"5[?(:XN.MND;MJY>I"T<9%(E(2'QAJ<-H7\"P;;K01+(5._HGMWWV 3ES- M!#?>']=;#ZQX1;+C]U)'E)#*K!#,O,Y8VP!.H@-OBO+>.^-*-P?^ZBE)O!U/ M^] @[Z3MU?GL=#RIS25?G8W/1S-^PA1S1G$%4=1"KL0ED Z= (,OG@4F='L; MHQMI>QY,VY]KNT^1])'-.)F/.+V8D[LPE^>33T^TR"D[0<:V)^)4X74XK4W@ MBPMU7$%*/0Q_N)N6)X>-)DQOKD]>)^J/T?D4JX;S\U]?!_,)RRL@+PC-@DSM M.@] QAK"C3Z %T&!Y#&*5*PG([V;)KG%6Y\,#OKE]][NEZL@_^6I=O4WJ_,M M8"Z6T568K&(UV;8.WV8!=. */5/&F=:.[(=3^V00MF?!KO4K>O/H"R[ZW%W]R8=P M,6]'\V>8Y"M &N5U*M3?2,EU' MS,*)G9)32O*J[!5B7R)ESPLA 5,I14>?3(^5W#L2O[,7"S!\^# M9=%7#.)!C+A:QBC7K,-K]5Y=UM1G@*OQ>@X3&-L!)G?%.XY!QH\%OTPXG9V. M8(.HY:C.050L0DZ)C/AB2\SAV>)V0\SNR&&[C6C[R PCNV5\@3BW%MY_K0M: M!1B,X8D%#5HI3[992O.&]^"S]F@B1M=< U]+S(&<_ >5]]&X( /MM"P@I$B+E<(:)0(SJC5^UI#R@IXF0NKA M]/F(T]EDD&:8EQ[*P6SZ\=,?2^*$8U8%U(!&BAI+\Q!#2%!"EM$7%4-JW9#M M7H)><-108#UXD&\0MVIR;HVW6CG0*2E03->QL"X K\/M=,0<4VO;\DY"7M#3 M0$ -RT+GWO$W6' RN8[F)5%*&*:YH16J.L/3)@M!2 O<)N\")NM+MS2F=6]X MQG!HQ_FUE9L/A,/-:W)QOMUUYGW_V9Q!==KQVE4%E"KG&$ $8I;R=#1Z3L:' MD:YH8U5V3G7"4V\D/G= 'H?L;R-:/QC1D]G)Q\K*N>&;98A2HJ6[.=:Q :9 M3!'!^N1\S/0_UFD:.3WUVA5(/UU=?]^]\'FZ5!_.\Y:#-%9$K,8Z="!C&^]G M%PBT/U,V.RIW8/Y-\>W N98Y,S?(85@5[)2!22)"F1R('!7 JTS7HJ6#Q73J MO71H :[QV+67WS8,:RRWW\)?@[/S5>ZF,-JXZG;4]6I219/%G7D!C4S0Q\@\ MZ^3 W2"Y[UZZQT237=@^;L&S/LKHSN-TD =A)EKW3MO+3'/\YIM*Z,>>@U=(Z?JIN_+O&%62//9)LMX M50<*^XI);J3N0*5W;<1Y$R3]R**/V.%F2H-DV0K+(0519[/IVL[/6!"2I2PB M!N::-_(="BS;B*#OB-WRJK3>N\CK>)L0Z8OFM0E?$J0Z!1M+3EZD MYIT<;I-Q ]"8VG=%W-[ *O[*NY_2-+:[^>5_.5U/7WU+0R&]?I].Y[\0O]V M=I*LRT428ZPP"FKV+9"*K<#FS(36BHO0NJ]K7VLY0D]6SZF$QP"*'L!^N?]P M\FVP=,O=SF@>C[[AM/:^G3OB/H]G87C]]Z_'T]GOX]G_A[./F,9?1C43_41& MHZT6M"93R$()'B'HZ""AX[2OD:-OG5#3VV*>'=R/ Q9]7NVM%[;HBDG;>OE1 M_3M^(IWE.<50%7-'NSN0-.I,<&%,<=Z2LL1[TQKVLL*7G7$\ .JKI\U#F#W_ M\I_$@\'HRZIAK);!:R45.&-K6:27I-=Q!\1OQ9P3B=9Z+/K/'?0_.Z@?3/A] M>(LJH7'S6N+-M$]R[VACD3._-QD<"XOD)$=MD%X$+#JRLLG,@,!9 ,18 M&]JP).S16*/K%O$\\7PP,G.AA0?^%@R^G5>?ZAI/P!9>_P0\34M-. A<1 MF13 L)9!2XT053%DA23I+1,%;W8Z.":TW[>TESUP!)"YO3/,P326Y3+?G\^F MLS#*I(/=6.9EWX#7X]%L$M+L/ P_X^1,G @L3&G-0(0D0#FM(&IK(6R5/[088HB@1>FQJ+D'5FK>?3-%W \T3\0<1_&\MNMW$E.QGA'S'AX.OL#0[#Q4F= M=TAF"@,>60VNT5T6G./E\&D;+B^8_%T[3V6+?_3S*)X%Q+33=(,$@72-DE(#GM F= M-DR+4H*SL5_,;D_T"ZB/ 0UW!(]VCI:NZ@_6K/2_!K/3=Z0F?1OD\[G#?S6U MX"-.;MKL__?FO^FW[UFV=WM9G.[?ME]NHQ5NG2..KX?Q! M]-W[0KOF;VT( M6V17&ZN#0"'!64LGB5<>@HL[=B,Y!O!S9]>MRG?-LW\A<%-QG*$60VB5B) Y[#A:MD28&%63K:HQ[R#E\ M/<;!L#+N1V8]Y%FM(6V9,=R%N)X*,^XE[# U&.\A@[T QVB=M@J+= MX1DHZU4]VSF(7*3T1<9H6YM'!P#(AC*,P^!C&];W,DUQ.GM?:O7!9=>*@,$S M;8F,.D'0*83@C0:=@V8RA\1$:RS<(F+_IFY#(=V:JK@+A_LHO,#AL'8S'^7? MPN2?6+/'EF;6DCZRC=$6:T'Z>E=:1]=DK5EEECF6DA'SA8-^6^@6;/J/*YG7" FN"S :\.A>-*Y M0&?]^^-A@KM+ :N"VU(,M&"(&..\.%598ELM-: ME_\>6:/T8S%O'RZ70U1"/*235I)G#)_>Y;2WUND^>!H@@-9YTNHXNIH"L;@:"Z'UOW4WX[/)_\3)^/W(_R/!6[#+)VNFNOFF@X>#)3,!(&7#K^0I ". MVKN6YXZ.9A+HH;QVZ:7#?#?+EF[8DX L1T:Z>='UD(LL@O,E M@71!11ZX4+QU9XYNE.T?6\>4G=:#]-8:6OO)';Y1/O@V#";SR>C$NOD:QV69 M^S]OCD9_-YV>GRT^:9Y9W("6/O..6[/J> 9/!R54M> @V&>MU#Z)J/S+X.G]HK3'P=-; M"/M84HF_]VR;DDR4#"%9)NL%2!PUI%Q9SC+=587NKM:UTT<63]TK!NZ-H6XC MB\<2@^JRII<8ZE8QU*U@LH]@U$-D_%CPRYCP5M;.&-(PVMVJ5+O3@@QU*UEW MCJ%N(ZB^6N$_I''0I;5ZS2JM[HKJ7:_]@?B)KGW\!5/@E60U,6.KVLY@@QW+.!M[(8/YS_'0WK:<#"[^!AF>)*E,AJ- M RZ4(N6^)L!RD\#:;+P/02O;?,C5WE;W/+?$\0'G$&KP-BM=;?XWM5T&CO)\ M@=)86:)7$)P@LQ>U!!]< "&EE2PDIWGKL?2]+^IE0QP4)L?4'/^N!7X<3/_Y M=H+X;C3#"4YG\P62[J>R=:3T11F(_% MR=H^K,,IO/OW1/*BWYOE]!NJZ+.EX@F])>Q>-D'1FICHX M5AGPSD30=&B*Z(1T:N\I^X\H^)8YZ_A?II#X2#9#L,G62ESF2NL:UR<6?-L* M _<&W[:1Q6,)7G19TTOP;:O@VU8PV4<4XR$R?BSXS=YX+K2#PFIHG?L 7B0- MTFI$Z4.,^W?!'0UNMPJ^'1ULMQ%MZQ*BFV5-\S*4N^I5;GPV7\Z]12PVRZ@X M2W5R9@%5'>/>"@\A,^$+B<"P;OVP>R/Q".W[WN$S/CK9'U-D9&.C[\MQF1_' MP^';\:3^HQ.;E'*V<-#1D.*5:=U.Y011(Y?T"QW,T41''K3"(]PH/1MFQPN@ MQ[E=EB/<3 J>U\XY3M>\%\_IN^0X7;V&V\"WQ3VB3;('E.Y_0ST M8L<4<=RXT'GQQ/1RTD]6+F7.27=5==RRX!)\=A*2RM9JI0([GI#\EFM[V4D' MV4D[ .R80I8=A[5>@;VMTZ20L'!]:5R%;@,40%'LD(5LP&<%1$4^VEHY3" MC=S&N8+T)LRN*IRO;YX0@\TY"^#6>U!69P@HR01)PI:(&$Q^/&??@UCPB,[' M1^,FZ@V"C\KV[O7 ,ZWY$>^\8 MP'^$&WDKY#ZJW?N]8V$S(Y27BA0?$F+*CM0[9\ Y54O5BD=??'*Y=8^?HUG\ MRSX^SGW<)X8?L?=L,R.,*(''B&!<*:"B0?"R&# \%S+C@G=E[T7C^UK\RV8^ MSLW<)X8?HP?O?((WZ_CNTD]4H/]6/Z8N=;I*=! $"\"++MI;DZ1N/6[D.%;^ MLHV/2(P\6W!(LD01K;.&,85'4U'3W#;>T\CY M\[.S,+D8EY\_??CP*LT&WV@5[4?-W_>67D?,=U[>\=21J1B5R%[35O>DBCO# M@%3PFN\K:U^2VIJLE_X=3Z2.3'@F34@)2.W)Q+XZ=+-P [H8I[),. M8QW9-BCMKXYL&V$?2QW9I_,X'>0!'4MU0BSQ8)ZC/&^S%1EGR4M(LE8;>Y&( MIQB!M)64O"J^I.8:ZSIB'G]]V5;8N(G0)C+JP^MY14Y-J7]?/A,[IB%5UJQ: M^G6@L*_*L8W4':8.K)$X;X*D'UD%JTEA2F0LKP81ZRY/A#%'209ICUF23>JNQ]=#G M.\@X@$.CL;3N:TOX %8W+*J85U8]6!]<],U?SFW);\>3^:IR0/C";P?-$ MC,W2@B>-$:05 B5/AHFCR8!:LX9G ^BC ,':2W<_OKI+!^'/T]G@;/[1N- ? MG(U'"QVEQY$N#WAWGWZ]75EQ/-X^$VP.VB$=JE[09J!MX642H)VW)0D32ONV M1T_(V^>B,UBL =3TG:Z64UC]*_LI.R?AS .";WX7TKNS$^ M0H@L:8FE;NA8$V\9.)X0N/2,&^/IXFBNTO>_K.>Y"8X(*L=4/=5YA(2(0F+@ M&HRI"T04$--\_GOF 6W1TA]-&MN3GC1R=#OAP3 YIL*CSB,D?&U&40<)N>A" MS46/X*3UD%A.CG:Z].EH'+Q/>M+(T>R#G6&RMTDC[T;T+7X.?^'T]T"+G0V^ MX0ZAI?L>UR9:U)G@'0- \_CZYJ6&^$-3$(OXEGG=ZT4_+'FH)&R8X! "@O:QQ!\2L84 MM@C%!G9*B\&N5?Z2^'_^_Y9##-@WF,9$5>$D)HM& 59Z 2?>>B MIP4K%9535FC3W-*]GZ0G@H:6C._A1'@[GN#@R^A[K"H74)NJ @GMJS>G0#0\ M@[!)JX$Q131:P4%(7HI+RCG?^L[8/SBVMB3ZQ\8V?.\%$S.213P83*IB]>2%45Y]LN#F3T@KQ6NAQ%VJZ=I2T*BFKD>V-*JL^S 9$_YF M%W5VZ.S5:-Y>[6N-;5TAFR6)R8L,.:;:Y,^1)A3H+&*UZ9\P4:7",+^ * M2I%,$$FT+JS<1-/AB]1: F'B;C7,O@-]/7EX-M%V&"]/6XEN MA$L#<1P"-JGP')DV8%6D/9.J+U22WFBDBM)8GI,53P(N&_P^AT7+-E+HJ6)Q MNM0[?\?9TO607"!3TR"M4U;3A4=PG!M@4>;LK1F75V0=C6KY,!%N@L:._-_'(7*-1/36NB(9L%JGKZ*1$'2T M@+H$9EEVFK7V".T=&MNKD;TC8QNV]X"(7W#\91*^GM9LN1M$+N\]BR&YFA[# MI72@N&7@='3UBTR&LQ14Z\ME(U%'H',\5(3C/OG?0PSQBL W@^EL,HCG@ MK2>MXSZZ#J-VM))A)VCL((!>+YD[:.28=5&"-ELTM;+4! B9"9!)H3<2D5G] MZ,&Q0?$X!#:VX?L^,3$/FB[O/E>R,]P&T+P.U@Q.@P^,;&Z=G=4JH=:MV^%T MH6O_ZD<[27:%R$/%T(,* MQM9MM^ZC9__0Z#F0VXSY:X'1/&]E-;;L>G[&BDOA&H-^QUDM"IEA#K.K3G;T M%^]+&22<_ZZV''A_/J/?T4/^(/IP.B\HV2FM9:\$-LIZ.1Q3]Y<4DZPU!:T MGDN=(J$2P3DD,$E@23HQ+5JGA1Q14@P&(6U!!O0U@DJ6@U.>#$UI"@\^U08; M+TDQVV#DP4DQVXCBT23%H!99!UN5$U7-7FWKY (/,:L2<[11\-;N@D>?%+,5 M$+9-BME&((?(;NA"WTM2S(,ENFV:PT/$<0C8\!RL8ZR 95J!TI*!2U&"E#:2 ML9(=:WZ//D#)VG-U-3!,Y! CW=O.YUKZ(P7X%#-87RO!1*W7 M:>UUVD#2$<0T=I+AN#\![,.G<"W45[CR*)R&I#PM6^8((;D"S#'KF4BF+9-SD8H4W MK;M[/+)TBJU$N'4ZQ3;\WV\ZA2:R4$4&5I$RI#+WM0C4@N*.9\$%TG]>TBE: M:!V-A+#O=(HNM+VD4VPIPVU"Y@\1P+[3*2*70AEAR)"B@U/QF" 8:^@(C4HP M.D)5["]=[_C3*7K#QC9\WQLFEIW/5E4J*(3.GI&AK7RM8*!;3]2A?P5S5MD4 MQ-89OAW(.K)DBJWDV D@#Q?"OG,IM*:5.A%H2V0&2G$-+BHBE2M7A.-:^-X= M'\>>2[%+_*\9\_>62_$1AS64_R$04Z[-=9M>I@/0DBZ!/IV-WX[/1WF^O!WR M(W9_:9N)G'XW M7/LD,Y9C5 %DKA6%+A@(+!? K'5)W*%I[NK;@KRC04P;_;8OP;0VY>=,G&+Z M^Y?QMQ\QY1_GDQ1K>.W]:'BQV1S_#B+7G[- 1\I7H/C^R5O9W-M0VOK;=[NP56[/AG43JK$1ZP^Z3I#^--LG/Y9ZVZF1.L;+#B97/]PU;R< MIV(C66%)QP(J1@.>:;H.N4*CVWA:CV6G7_TQ7_/@"3=$H+J'2N\F&T,"GR#+FX3&:3 MQUI?CJ"M#);%Y+P4G7;YAA<]39$V9_%M\=N=Q$_VS>1_XF3\?H3_L4!;F*73 M)6%U'EX19-Q@$77TF680,]G-SB$:^HBCVABLV?B6)RSX9LR]+777^.R>WRH? M/_VQCS/\QKN>I/RW8O-M\?J=-O5:?<$'SC27!0(A#!1F!S$&!DQ+])F+K)GN MM*&?H6[6A*EWN/]VZ^YZTT98 .PNT'W_V7SQ]^J6**3%H@,$+'0^R< A!!= M1"XP)/2*=3O\>R/Q"8/M.,1Z!UKOGR6S_+A^B<2!?_^7_Q]02P,$% @ MW9A46&R-\8V3#0 +0X !0 !S<'-C+3(P,C,Q,C,Q7V334 M;]\'\.^8L2:3?8F1G2++##&6B2+4*6RK[-_)AH(=MD#S%9)VELA=0@ MNZCL6?^X_GOM^7^?ZZ_,YUSFOWP%'N(T>X1?GXH0(28I(P M"3%Q\1.RIQ5.2"O+B(LKGE%25E-'(!"2"CKZVAIZI^$(C3^'@#@Y.;F/<(L< M/2JB(24NI?$?A_D>X.4 / /,$@:8.$%@7E!S Y $@! K*"_ _PK(!8PA)6- MG8.3Z\AA0]TQ@ 4$!K- P*RL$,AA->JP#D!X6?FDU W9^*W=V*4#!31B4@LY M9(QJ6@6O#&[(PMV#8CFYA(1%1,7DY!44E4XB-+7.:.L@SYV_8&QB:F9N\P]; M._NK#M=N>'AZW?3V\0T."0T+CXA$W[O_X&%<_*.$M/2,S*SL)SFY1<4EI66$ MY^4O:E^]KJMO>-/XMJV]H[.KN^=#[]#PR.B7L?&)R;GO\S\6%I>65WYN_M[: MINSL4O?V_[A !CT/_FW+MY#%PL$ H:P_W&!6,+_-/!"6*74V?@,K=G= OFE M-6(X!(Q2"VM:.67@5S8$W8,&N81D$7-RFW]H?\O^?[#8_TKVO[#_6!>0$4L+NO6"(+2G\O -1EO_";]$K*:7IK^E64-\6) K]=SY9-D_]-0,7-?"P62UHL7'V@XH%+E:N M+HPQ0$LD)[)E.W?5[1\[KHM:*"%?-($6$Z)4DK1=L!"KL$?S,WX?D5\I@]D= MEKFG$_+(J5D?_M1N%F3,#@0 !+L@XO%KQRPVO0;:/^^66S?LJK;3VA)*PU]< M]2'GO>N1ZKX9 %UPHB]UJ/"-\X(M0]H)64\D\]S+\KGJ#$3J;9ULN5P[TDP< M+T226O@79P[R55B80(.ZPIYMG^2CL#0DD9)1#:8%5@>@>*!;Q&GPL'J9YU-6XB+?)JZQ\VUK/*2>&OX=MWKRU4EWL)[=C-. M;4,,05TFX K/.]"5<*52;KU379'I5M&3JG+56JA.!0W;G[NYT;M0 M[1_*,4^YFAY(^XS*1-L*9FPA?U-OI20XP(3$/O]FD%+,H7%H<9]ZP\!3V,@2 MF3WW5Z&HA]4:PD-K!3KLIH2]#(:^"=F9+G@_\$W\NRT)FSZU-)RJM!YRDFR[ M45D=0&1M.R;[J)F,PUJON[PK)&OM+^9FAS$!I8-:8RO%J=87,)6-7^BUW"X$ MR\ZQ:T++5@<*XTP N;7.1E8I)O>DJ3MB8J5SK$"7(E Q=+CSL'778*@T4?M0 MM]&=:=:OW/'B2CA!A=122:BUOB XCS>-S.YX]WMWIYYK1MDZYRJZ9C;Z'J5R MJ?V+S*4!9>+95M,8_UV< D6>U-[IO]-R_%MQ"+^)Y-P#P5]G;\2X9*D$N:T8 MH@\/C_SNN3XY?VHT2J*EZLW"7UC/P,@YTM<*5*IBYFBDW-D3#(=/D;>S2L/+ M>H8FG,W M:ON<:*PS/6ZQ(AIB>%2N',R4A2]D E>VAN\WX71QBC W!9%_>M> M5'01E.;3IV<^?O=+S,OV6G"8JHWJ#)FTQZV_7M7]-7QAYX, 8\U,DM5^8!>5 MKYI,LO1\^5(H#!QRN298W$TO:]-CF_H_'3;U'N"SF[.7L>21IHVO[P+&WAJO\5@N5XVM M3F 7)WG_GF,!VY#F\:;+?LB8)YUB>*4RV1R1S=2"]S?QZ.SO46^8P*/0'O)6 M%]8(1?2[GU"8L.,S3;;A_FM:%2!K_YY86:D9CT!3?QI(UKSUZB.=U:&XM=(O M"*9N4/JH5S11K:>>T[;HWE4H7E:QVH0UC(AYP=!]^5T?5B^/6K;MXY*Z"U"%>O_(=8;F3+)Y!-I6F$#9A5VZ-J7GC%8-6Z2U M/H3=A+3V=5D^_4LZLB-:+CQC_HS0VHB,K>;9^W0HJA1-)R:7)F%45 IC3$22 M649?N$XZI2X40Q(8G:&>_?'/?]!P&F\V+B(EXZKJCAH%ZO>>/^_=R)$4P:YO MMC1NKS_G=V"IZOIPAQ+_4"Y(JUPV30V5CX9VF)&JCHATPVXMXS\>CM+L7[IS M>7A>"XUVY8 2[>E?G.3Q:-N)AQ6K:K_SPXMI.-WCAM9=1EE"R!)\Q8Q-R6BS M;(Y4Q.L*^^2\$Y9:&BT71.F6 0Z1I4NJLLDS:1UCY3YX**+OC,/I:8MN%Z/J M2?QC,C5WR]EH*.J,=>YDB/HG?OP=7=Y5^]@"V)H :NYC\,F(/N,RI?7!$#K4 M<-A W,&$.\C7QD*YP[/8>/+N/AK_^2T&!5U!1A^MQ-])0JI?;%B,K(*]^4)) MW/ZJ21]Y?N^QR%WV9A319:.Y"5/F)]2CD+I:FGHC3=[=D#T)%^A$J7Z2T]EK MJ[HP\*O=2QL9G.1FWM?B2E[$Z >X\C\YBK)R6;1#/43M4Z;'LFGF[[9"_1P1 M2Q_B:\"C."K77-_WA7A[NH'F$A M/_Q:]Y21VJ!18=S!U0_TX O!]GA]![/0FUY\//DOG M: #(#(84#3?GA(O1I Q1A&H; ^H;SKOA0)(U^S!\)KI5='8LG=K7ABN]M+MC MG>XFU0>@1IYN,X'P@;'"V JNC&DQ@C-.!EYX)?GJO#?1C@F,S?8[%)'>M4?K MI[7)OAH57(J),,O.MEZ.,B%3*J>A@LOP[B9-BU!8RE?H#[^L>IXZ)8>*RJ7" MAQ\#*/.ALGBO8"; *]U(LM3J&N*4#T\M.9E@=9:=0L1Q>$.?K<@I=$^6^6M< MYC':5YVSGJ*NGWW=XUCVQFT2HK*_@;JVM,:0;X1<77F/1O3C![#)(<8%\J6" MQFJUV@1'5A-^Y?,_79SYOLP$+H\:,R0T!PR*)6V/!F09-\15@!;"A8Z>81=:OY6_299S^MJ&)DO3.%G<]\ MS'Q+$/U;AX]MVG]#@M43NN/+8_4]:]ITNNH@3,X(!=&,]J^INR!@_Q0C95U[ MJM#XQK[DB./Z+@82#I>Q?=R+54QLY&>Z-C=$2Y'BJU2M3%$FV M>TN0'&)_6Z^-)%B%M>DCIL_Y]N5^V=9K'ILK*Y8?#HWT!]:.":,&[.CX]GP8 M<+3]FU/#@>7KZ',TOYJBC$WJ(WH%6M!"J6FF2G/&9-8-W7XIL(UY="^5 M"MUX>>-2J/XB8Y<.+[+U&=R5$5Y.9P(/D1:)\2IN/I5RID4NE:MW3ST8)=E@ MJCY/6CTL2KT7*-<#"5RE#Z[Y[E/EHXS<4/&:/E4BXO'%>Y>Q^.NG"+7#JPAR M(&L^*< 8]8 -3J'0_+S?(D)=MEN@5'G^% 7^M98@U!ZC'70CNV;1E&4.FM^5A#9;@M)60_DHMZ:B MS3^*7BN.3R1",B'$$VGGY)?\\Q[#\;T)31>\IJ8F7KL7O8Q-4"Q1*TI0!/[- M!C,G_@E02P,$% @ W9A46(%Z3C2?% 5A4 !0 !S<'-C+3(P,C,Q M,C,Q7V'-?W'N_>^]7 M:^W]K,_>ZUE[<<>Y,\!AR^L6UP$>'A[@KX,!<">!JP ?+^\_\T#\!U- 2$" MGU] 1%#PD)"8B)B8J(BHJ+B$]&%Q"2D)4='#ECLC(RLJ*2#Y=P'_(1[>@Q@/"0H)BX@>.'PZ#/#R\/'Q\O/]$_6!%7%@!_BE!*1/:5\^ M=,3VGN#I8!F=F!<%0F>N5'^1M1N@J>BZ/7PJ+"(GKW#TF.I9M3_.J5_4TS?X M\Y+AU6MFU\UO6%C>MK\#A=UU<'3W\/3R]O'U"WD4&A8>$1D5^RPN/N'OQ*27 MZ:\R,C&OWV05%KTM+BE]5U9>4_OQ4UU]0V-36WO'U\ZN;]^[!X>&1T;'QB>( M9,KLW/S"XN^E9?K&YM;V#H.YN_/GY^?@%_^'BX0W_ MQT&*7^"4]B'IR[:"]X*/G-:)$9*Y\J*@^HOP&5T[FJS;PP$1.96+9%7Z/VC_ M3O:_ WOZ_R+[+[#_YB("8GP\!X_')P6 @?W;A4FI;]S1P49W?'@M*2V1]) V ME!B5L4)LT4\/^%7GR_H^N71L;O87?=U5BZZ[DS;"OD/1GL'%/4#Y^-W6-=,L M?^WIC%@'@?^PG;X^$[;J_Y8)9VG\YAQOX/RBW\?2,B*R;B]8J4[H7#Z^/6.@ MB2(&?8/][-(HCBNI\-()QI>+4I"$[E;D[&QQ+NP'R$H\_0L$8V&/^8SU#/#: MO[AYJG:_P-AAMG_W,%Z1Y#I1_VOX4Z)9BS+\*O.2Z<@8\R8X.60Y+(29--M6 M%Q5('9IT^&JZ6\;^Z]NI?I-H.O@AS#6I @HARZ/-C8@"_7X.RY@2P(XHLEQ4+!9 M'V0&U-UBP7)G\EV#V9A:4:,\602/^C^PC.'L" 8P>C>:()_$$3_+<42P%!5: M2%J?4:VP%+C7"(?:'U&(!P^# U>&@CFQ,TP[Y;W(5E7"-0#YZ6>$TPYE(*@D M3>NPCWR6G0&[A6BI*87H)CLI6V/]MM7:&W-.]2TA>@T8SK1S]#PS*++736/Y M+69Z!+^Y+ (2;<-?&&@)*"XI+EB^X <-&""CFA *H;=7K_N'X<-L7ZG,ZGFA M:TKM9-U*;4KR>OU>VYK)GHV!JW&&L$?UQ(.4.-D 78F*0H6*%"3 MUX[-X9P 1JBDXYQ3I6U<(,&PY$.#P0^"5PUD_>:N*%/B+NL<3G _!:F(+WOG MEV1 MJ(Z[Y>,_;,XG"VHZW!E]"/=21 8%M9=1P7Q(D24N(,B^\/P)QG!^L (.=U\W M8&]"KKD^"3?.:W%DEM';V\%"5-T*9[V^(O7U6)LZGI+@Y2@!9X;[5K_E +-Q MEFDJSQ2TI_/_7=O+^ZPN#BUMW>4G67+SYJ7/>C1&NV3"WAA5EGZ,OBUN,\:! MZQU?W'UCG\-_>4B%)@CPK/(,:7WF GZ&;]+<]PX[8% MZ1[#Z96J:U4O7$AAVU&[]8N_E<[NU[=8(1;,"WPR#:\\<@A4^-7#!6IP"^*1 M@=7T(HI:VASK(N?,B*8U=F/I'NOY]*0;'[@2@2"C)I3)I 1]DTYL<*5UT?HR M3 ##V76IV$W:=I%O-P0G:/PPO)GA7=*%;O0.?"')?B2R1:C;2)%GYPZSV8)?3I!@R5 MR@7.C+<].&1[U9$]HIQ=P\H@Z'[Y2!@?(E,S")A'69D%!NSMK-72N<, V''. M.)0EY;LY^1W\+#3Q_1IF;6+9_$=B:^R3H\BW>@A;LTC[S5_=.;LC7ONA\.!U M*-DYLU7+@S9@U32POP)O80_\W%Y78//0)ZEI+FKV]9Y.V4<;X^<-R4_^]#2Y MRM=UZS(.;RK+MAHR56=>GW080CWD LMKE8KXQY'F]J9%.;&_#D?\OH0F'I_I MK?\:)-2]\[.0B89 ,SL#4]5"1)66IUHE)*N0MOM92-4>VB3%LT7>SM@1^F[% M'2'*KC@NU_%0:KSBA/*_'/$XJ6/&%D\RU7,"7/-6"&PPI(%]D(+&Y@(+U9]' ML?IR]6VD"=1";F-S933Z9],?A01]\'U3G?V&%F>&Z]D!8P,9;&--G?_WVZS! M1O7&/?43J!;_)70L7A9R*%J;-OV\K)I<>_T5:@AV?(X+=+T>^XKZ*#O&5E'^ M",7Q8Y=']T;[.;S2>N RO3V)VGMU#D_;S;URL%78A?X>IA_7>EHR5.(.3_ 'ZK&5V40O\?[ M&-:1)T^OJYUY7*:YI>@Z:]60"5:'U2.:,562MF,O?H7AAOT&;'[O^6RCO1+%F<6KQ+-;]7,CKYF8. XA)*> .5\0;8VV_LDV MS$.D/JLT6I:4QS3690@KG+S@+&UQTCM%0B>ZB R+/TDO[0B2\,%H-Q-=IPK[ MRED.A2?JA.:B\S<,8226NL(J;P6Z?>/=U,:V!6+*T =IOIT"O9/5=!2J,?SP M8V23/G5Z:6)[[!LUVI9U-]J,SI_M/D(>N!>TZU[R^0@74 KHW4LJ)H.)[A3) MN- ;:\5C:Z')H4'3$\LV"RJQ#=^/O]H['+%E J*2)*/E:>"X ':K4=O>?;CF M:&2^]#<2++I^!2Z"_&EHFDPF)1,YV/SK'WQ_6F(;$_:='RH,-VGEBT$4>;Y1 M74UAR3VZ%OW"5F*%+_%E_D-SV^N;IFC3GLT?21G&B.B05SF5GN=\5JC7#;O97K>25$]2^XHQA**:NJ5F#Y;PO MX/L2K.$PXM!@N[*%ZT<3T5]\9PC)>]B)HHWWVV8NUT]B-4>C$[KV/T)-)V27 M4#6E[3B9B(1.WUF<=.OF!/$:I2_ 8BIO 29@I3F;6V 5/25\4FR&LDB=*"KD M FUGRM^U+U!&.*^OP_>S-ZO8>3D/6\CW[MW&9FD8W<_;F:(&=79E=-PIQ3Z8 MJQ5YAEJZ/IK,ZPL6YP/G0B]BMZ\K%R+\UMIM]NR.59W*=F.'Y&^.(!^6H8WL).PBZ7CT:*?8[ M2&L][WC0ZLK'8+9MZC/EZ29^:F\T/IW/T,;*_6B.XF7C:[S3LRDQ'[]I/6OCM&/?'UKHQ2C]\SFH.S?\8S%11O\0)V!HWR4C@Q$@_SG?(@N>1CI ME/NU,>YLVB6V?V -%W"4.Y95]"0_'X- @?PWO0ZJ*Z@+&I$R*:O^$B&7& DB M0:ZA4_30$U$]9.^V?NF(](ZFIWX'76!*YBAM/J @XYM9=([N!XT7SP$3]*&6 MHAGEY(MP'O;-H6UJE+F5Z)\EGAMN.KJ74LJ?"+*ZTF/6X5#.1!9FW%3,I":7 M$#!\\LG^H27PSFM<)E*,+3%BJCL-[W*/#"AU\F49L]Z\JB?UR?YK&7GEY@W< MVVXZ1#X3VN&E9S*AGTWL_N[+P,KGS:]H]5\8-\Y*"GEJ9_6X>PT6@/\>.J#T ME2ZZ0WS<:TKI_[)W;2?=(L/%ZM9D$S@TT>(HPSUF":ZQUC",NTEEP# Z7$#Y MQZ"1TF*CRO:VWLYB#,H=+LSTHACE>E%F.S!2N6WGGIL%8".&7Y*NNTD61X?, M:DDL*PG3O0J*_>2HWBA?(U3MQJ+Z"N>[PLDT;1<'Q?NU6<5BC??3 [99VS6[ M&A!PTH/&18T3T!!0"='6R3R0Z+)77["-BD&Y5?+V0SXVT&WVYSF%W4I.5K[7 MH+^[RCW$>]/>?.O/QWG3QKYP 0$FV'U)Z>A092FD6?>*"H;#T7?:QO5/>5,P MJ6R70#<\7:D:%2#"_O:RJ;/:N>XMT8JK&+T.NQR+1NJO*IV[PQR\.8#GLY6+^Z! MAHJN\O7(>_:MSA-9!BO>&^!K*_.DR7(/B%B$'7C6_[L3A_<,P 5^7\$7XI(( M >M2B.9.HE*B8-\CEBZH$(6$S2#".B5GX>?:[7.M^[)=- ^"66<2FXI>C$(B M'Q8?M']: [H3*(_C1\\CA98&+WQN:FK(1>;=@^]G)FTIQ^&/IG]!241?*GPE MU>/K+FU=^K'XX-MGTB_"DE]#[Z9X.E9/?.=X#WILJ<;V?&!&:K@+E:YXHCHV M"<1^<@5SEDS8B7OU>%M#.(LNB]QL1Y-.LH$@Q.MU5V'66;9K\F=7=E3=V$KPZCOWP+=@^.,)W7J'>4RMN=V<;7]&X2Y*=T;X4 MIH\]/+^\$9_N,CJ&A [L##!,J85X->8YEI,ST[*/=)7^*,0OZS[XO.$K\$4: MSO,!.('Z[,RW!^N??>@<*%*4 M4M:HF7IVR)1PGA)=>_%M^97RE*9.F[/X_7W;>7A=:%H%Q0HE%($R&UH+!;U9 M\VKT"2C40?PL%^ZZS&K_WC5Z4+(FNL@GN(!PM#0-_LIPM$"+&#AP_&%7I]R% MQU1%2)G)![_ZOPG^RO$<98GJY4V_#1R[=BB "&%'D%&.&U@IY)2\6(U: ELS M<7_B$RB5M"M^D <_*R:*XWJK(Q3^.G[5\\:4MH]'.XA$>UUO97[7RAAZ&(3N]ED8=(?Y>%T.%!=PY3211P4>0 MP\I2;)NS0[BZ#%%4CZ+^*4&.20_R4UPQ6X\91S\]2[W@L]?Y@7TK27KO+:YYO.K%J+,F28:;;-UA$0]XY^62BNL2S(QGB5&P3 MP3DGZMC>V!>DZ* Q3_[D;Z)JEL/XY3YPTG43%S34?1F5+T-76)6PC2]+^&P? MJFX_#6O%/PX='-OT^&OC_=#?U1^#W[2J6J9JN/._G^X/H!:V4B!G429C5![651?FRUT53F]=(V5 M0'H0WL#IOYC.0?QSX\2THI(9TD:S5O,=QAD*6I+3CO^C1;L.5[G49(>2=@+U MJVW8[F5M0\217_&"@W>4;S<,AWXG+'V(S]? 2-2#O]H_J884M% M#X0)3JP[$OO06JG\:?JZUF/:).V2EGBT)@T32WL4)+$T*M%ZUBI4!T7RUM@; M-;MO3*<8=XQO"[CT]G*:3MX>CA;TJU$5S3SH#L9 M+ ;A:H7T\5N-L-Z\]O?^^DK*0W/X8=RIH=6"HY%K*D+)S*S==(I\5R^*LE:@ M%HN4=9BRKF'7.[85H.>,%=_.=E_=7_AB BA"((*KS>\BVF^A;S$S9HW6I:TK M&^^?_QX_89*0SP4>G6+@?&E=L5M! DN^I;^C//$8+\)&]X3^FNG[J&K&);W? MM_/X-!FSK.7D U^3E0/S3S=,=,_1\M3:\=/"W&[3'72JE,IJBYR\3-N@F7- M!)=DO\G5TY+J:_8F3,:EHA9S_K4A/[SM/O9!$9Z,5W)DEK.H=KOJU( =+Q2( MD1T]')W ?V'W#B:V]L%#'== M78@&D8MIJ:U;PN&JE"D7O;'L8+5U8<];X4IS&6K&$L%I?U1E)=W?N?[.6=]O^?\SV^=]5_G_%;;>F;MO69>>[^?_3SOYWE>>S][8WYE$H!] M%TS,3 "V76S #=8?P%P%^$_?\KWI"K@"K(6-.0F[E8PKEG#Q'F_?WQN^=_&_HKMWL[+NY M.?=P.*EW]IRQB>EYLPM7 MKEK;V%ZSLW>YY7K;S=W#TS\@\'Y0<,B#B,BHZ)C8N/C4M"?I&9E/GV7EYN47 MO"XL*BZIK*JNJ:VK?]?0VM;>T=GUL?O3X-#PR.C8U_$)XLSL][D?\S\7%LF_ MUCNWZ;0/.WWJQ[0KZ_0-!CMV'-??L/VW% MZ>QW0.;8(RZA,RFO*EKVRFI=)@G?O#? +2*G390G_U;MGS3[_Z98^/^59O^B MV-_TF@!XV=E8QF,7!* G98;KPC\D?];B=^A3%ZJS+9\_T3NZ+G!"]_#1JQ2 M48=/29^FFB GF0 WU T;:R0)BO$GO D>FW%+E EITB2-M=P?N.Z9:5/QHM+I M\^T,1=6R?M*8[K$.Z=/6JDQ S1?$42(&D7N0?5EK*Z)4V[,%(*<)ZNW9<] XX-AGZVMGK\5WC9C AQNY$R:D ,E%70F3S*XUT@P MHFD;;'_PVLQ:LF]T%!/@$6C/++X[P9]-;;38U7OH84&^^V3_A77AE$'H,9WQ M'W7Z3&"W&Q,(S_P))5W!@S(*K9A8)"_I!1.(<@$?42^Y2[.#A42>2;3F1N-3 MD<7%4-VPTA\*SW;GEW1<30_X5O*A"*#+D>IH0KB+=6-&XMUD*B60[-8&X4.X M#M\<:A8/SFS?RK@LWTLC55,R1$F3G]<*':^WE_5W4EMNN4_E90K6^5,O,2:D MN>DO#/P(J'![>&0-]"#-#$P/]><,1_"\,N?UGS+V%LT."C48:NCR\N (/G;A M>ZJ=C7;*1_MM%09_H54^$V@1;W*955.?*]N$\P;CVO0R8]8.>5?:.[XN]Q7O M%H,$ILLA! ?K4>.E74@Y<(D)<)X"LYW(OXXR@4@HY?@0]&W95V?O',K:Q7?/ M!F!GFW\%*+SAXB ILJ\R@?%"2@\I9H5]E@E((+C'$+)%P;HSMFT)"5?)Z'"= M[-C;&1*A14V3YDL>Q-O)BX.WIFJMVU1DY>(DDFJ6MC(SLL+RZ[:VK%HX!*O3 M++2BS@^8F&L: (!F=C?N Q,0P2UO\3<%=($?Y6M^ M79196W:S=1#06K$H2$ __N:]?CQ",;+=X!,%.U%*Z0)UJ#((Z2JP@\Q/6;L2 M.9)PZEF91,EUOKL_#U5/2J_WYWKO 4Z]>/+.RB^D1A[=AN;^R M;/&VF.!1+G.>U'VB&CIK$6>!6^ R-->T!>HPG.$\?: MU"(U@=.A243>/O@\%:%O??4?,J?EUZ?S#BKT[C; MU=9N7[?T]= .I"MK2,$(XR*$(;T11W B8)UM=)O%V\B>D)"3K>=> MZ$K>_U$\$=RY9%D3SP0L2"/#E/7.2H<^"?5QP6CKF H.<>!;;@43(,J/,(&? MEN^90',&&C0+1.T(::#6"E[RQ:M &/L=X8PH'CQUP9WEA)FV3.#5F2W&CCWP M]0_R#_(/\@_R#_(/\G\"4KDY.\1PLRAGIM7\MJIINI+8#MGF[U?.KWN$KK3W MPPX&!"K_;#O\:)%/+QZ@K;/J%!?:21##*F8C0=3LVE?S&8$/?=)@8>L#W:1 M0W]"9CQ"D/ALTUVG5V8SE0>=2R5DCL6O"-1UNEJHVG=>;;&%Q69$@' MGF2"ED3V3'PI+/@)%VOR)NM19U8>1O\T=WD5_-H\,FNZ_>++:./:>'W=]-.6 M?;)%KCR8X0E%]O4ZRD\PD-S(X!$DF1,SEYW+&%^DM4E[7H3-JD&NTU^NT1SR M:U[DH%V-67XWBWL()5E#V5CU MQA6& (Z8F#Z$DX[T0#ZD]%M#+$*7;VH-\]O.S3RV4R,&(562+5;&6M;[7ER MKJ+:K[OF(?5^/ !F4KSIF0C4[U*^:A8**O=U8(#%YH,#VFO1M1@!(_Z?TG(U M5*-"OYOJTJM;-O6U"F$YV]]3%6]FWND\GI*??.R32LW *BV,52E"Z5G-1HS/ MF!J-9?0,*E+<>+6T')2XT#"F,=N0YCB4:'1=;^HMUR.3^?TRM(4&S5H[(V_< MY8%3D&='07W*=!J#BX(GG0^!NF'V0Q)=/O22JAC[(PKUP"M4'K>O>][32U ! M-QB?V^A/;Z]_H>-3:(&CC!$\R9POB*C0@A_7[V("E9PQM\D*\2B7\IOM"SO[ MNX5$D-0G!62;71G^YSQQX3>&ZKHK)$KL!PB MGL8);A;1U,FF4]?/)2[X)Q=R'W'_D/Q2#/,H\ M$T@S):_1'\*9P%G[U6915+<6B;59#MVX8,M#]6<"W7G@%N.#!BN>E ?!>7#? MGX%!C \VF!UY1?;[\8HO=_V1?Q&!)RAO#*B,CV$"+KB$^_C=!BI4$5HH./Y& M/4FD\$T7R92XY)7BKGGQEWRE4\/'<+$COV[?.IMZV?#;KG<;&![&Q/2N&,I1 MW\D(RB.20CQ2(-BG[W3]J,[4@9G;3VL?U"9Y'VAXY.\M\?&RW:Y2N4//!+(2 MJD]^-9*@%[&.MP:JN2UKDFUG8FA"/!1Q>J4V/$'<-Y9F#HVGN9$D.HPXDK\Z M371PW"VO2?]DKEIIQO>BZ6AG"4E+E5W:!:)&FV7PI%#O! =1?K$F\&$D:X*) M-1^TG_)@"(-;Y*K6+-O8C7=SO*.D'PR'[),' 3E!IZ_*/A]X;_(]>JS(OJ;! M@VHQW^@)\R>682 X-[@(0I,TUNEHHJ9/+(Q#P$)<9:[C^WA@'LXHOJ8O.X$C MGR_T\OHVB9@D39STDPB"5J^MO")@QX>ZI#E!^0+0_ H9W8Z)LZT[&JSPH4'H M;9?AL,U 2%U05:]^V?W:QZ81IZ]$-K07U,X\X#P$+;KH=$:/0MU!\>%[#>"DNL^ ME >UZL5$(.41)^IK8 =!6;OZ: _GNH:$WNKFVAP1]]7R(Q:3KM>/51X[GU(_ MZ80+"?$HG#!'H0(E]YV6,-,>.G$U2>A6U8$/P"XS0Y5UZ P^MD: #=4RAN<) M8 (\'_N[9C'C)K^ZV@?.(>UF(JR&W\BD=-V3GI#G#5447F,")%84C$4J_@Z& M'$CZ2X0#8;+X!@XJX*,JXGXM)EGEG6SULT>2X3(OOIC*E@/6,%!5M.UD\SXS MZ@T'F@#9B]%W=ZGK(BHQW $NUZK.Z P,?+MN-#QQK7Z;KQ.OY7XL]N+9SUA/ M>@GN#BH"7JG0L@1-A.];\]D\$=A[L\N$A(PC?DQ=9 +M$^5+D55OWR8VE U= M[%+)O,HM-IXN_!1144#3(Y6C:1+<.7NR!F5OH&Z:9/GL,1@E%;]X+-U<+SFVBD(%LJ#\E&Q\*7$5M-3FXT0LL,,<<29482N0JR!0L'B@_+RS<)8 M59F[F3*CB^.?:GK?W=)R>&MC'9C"FS+7U63[ TX3C6FWCVG#3]8Q]JZ095M_ M:=L/(@>M?III*_#?T3E>6?,^4?#+6%QM2G]RS8['J=U"5J>DK?[=P*<217_' M!+X/T$*9P U1)M _VH")1JJ2OD'Y#:"\#>W*W;GV*DJ&7%$G7O(WQ/>RRK&N M-LB&> 1C)X]Q ,*+ZO<4H"X^U"XJPX,7$9I,X'01=*T$2M0D=='WO&15:$7L M%_Z@_J#^H/Z@_J#^H/Y3J*([OLN;BKM'DEI[Q.0XG9X5%_U=+O]R8\%8B(W, M!%HAH.+6BC,9=7[40,"/55F\!'$$?"PEZ,J$W43P&W,Y4LO=#I>&L%L7;LI_QU![3J<: \C[C"D(?[,NJN6FT5[$,7JB M#F:\K3,'&,(VN>8M8:JEF$!"0$95U<#R'2V=SG17?4V+2R&KN^2NV#][=?6* M7#)..6>,DD;/- @B<3*X"PDLMHUJ68O9*8S=X&$",:)P?J0FB&H[?F3>LF8H ML2?(N632OK#OOFQ]O.+K^$.#L1G'DT\>?POQ87'F_8Q>7.4:FJ&/:K%!N+$H MK!U819"R;1,_\H(T.D2<;YEB;\_ N0VOJAJW34TOCHFTKU7A#5*->2^O/.T< MU$[IM#.^WV"(1^,(A4R@RK8+/YY&*:"GT&"DB//O1P)Q[!ZV]G.TH,M>#7XQ M/3$.M6S[%+_-G(._T#4YWJ/06[=HK\B^?@3"B9P<1+5(3S+V"B@LK\^<)2<& MBS6+H%HM ^;AW"CG.U1@#%<#6TV$C#]%5?%.A^ ;?T&3&_ 3C8R]SF]H.6 ,(.3)M@1H$I20SRHOK> /F8!T#21J6I%4UPH?QU-A[2K^LX[=E:^K"OWQ7:SWK]GV[[^[/HM5/*=L1_MBI:JN_7S7=Q_&JJCH0L3'/ MRG+E?MZ/3#LXOZ5TW?8_(.^HY14H ^',!'!GT'];?9W[\##CRQ 3F.^$4#<4 M_[:J[*FX"_('\@?R!_('\@?R7P1164@=P=$? ME90&=UUKC#3S"GQ+7#[D2CO[62L:4+]K<1].,M\(6.N);<\_FXZMTLM0EHL7['CTK[O630X=NB$;B0)G( Z=99V M3)FH[VPW,VPVH3QDW7:#VW9QC$^?YGITW/3B7H\Y75MSHXV-%31@!N:78ZC6 MM /T*H;@!,T&O*)MF#NJ'1H%J_&PO=9S5AG=>QWQIBF9\""3!7JA0:\D#888C(X&+Z*J=9G ;=1MWVW&6!WY%WE]K7-ZDXJ':W:< ME)=$'Z-L[><2)'I=NH(C9_]D2SS'8/SJ9 MS>[4\/]*VTA(6IUI/)QD%29\5VGX?^?;_XS\IZ]H-&*C\+\NTO19VRHP^OXG M;(W&0I9L_T^)L/ F/3G35;V@>-K8UY?CMMFJPF,9DX>WJC0)P$FY@?IL,\?4 M@:%RA /5%M7BA[N%>PCU(,VW3A8;R05'JQ;%G*[?6WANEO' :9]U#-W/SG"O M\+HBRY:$MWB2C486PQ;T)HTR ?"@><'7/C8FX)9=2K(=.YJJ5Q"F?B!:<\0C M%'$]G1O>:RBQD;Q"F:"+D<70TJY7-07V9G9>:V 9R_PJK@,:K=(X.F5%L5UQ M9$W&('HRRA5=_5,+'&+L9P+[6])9/""TU2>33R@BJ0J&49:4YLY0A]9[S69C M)V(8W'@6YF)#VEEZ-DU4MPW']NVC2YI-Q8MEHN8\9^_PBW-I@@.IXZ:<3PR] M%M;&31E<<5091A_T-EFTW4*'(1N<+*G91!9N2.!Z'I3\<7\D:NR*TBH7MJ)< M3>V.FDM%16WR0>=$N:/MCZR%>'<#=P')&[8P2L;IM(6'>2LE&MLA5AY+!Y$6 MB\D"RYSTK"KP M#A-HK%BP(6U%>LZA+*^Y'G34QR8O8?6;,-Z.97UJ],=,X!8T$E41TZH/CX)R M!^#, I-N$CDG:AS*G%^GQWPO,KKJQ'DO[$*\2@O6J?9(=Z,_$%_%M+68"-J8W7EL92RJ8ZFDOT<]E-ZL?P6P.2XTWF$K>.X]7UBQ_37_#V!<<1-&KHM[Q7>]5)U]4R1_$/H;A:IN[P1!J.P MJ$RX*Z,?7U>'WA@G]*<1+^45(GCZ?5\ICC[0[H5@L&82P.4E*^[7!DG]XZHJ MOPP[/D&T6)AO7@U=M!-G*9=!:^^["P6(<^2@-B@_F*%S1W54+;\[J()N^L*# MW;_SJB7G-%+D=^?B0L;.?)N=$13YI5D5="%B$QL2[8/:8/O!G%^?SKW#Y8CD M#+8R)$)>;"R5/DW/.H@/5DV2J+XWA]![S*ZGFBMWII[D@/E,_:RTD0F$%,/HG'"C"&?SJE5-3RUD:NDI_0R:OA2YV0+D[ ;"\%1MQCAR M'_TE C7K^\A^+3)08 _M NCGYYFC23*I\N,=;/,-%,WV"/,V4!V8LK^87?NI MWO76K119O]KWR%^_AF#5&0S&XHE#X<=3/5[?+197[+ZM\!#@2'U@^P/5@1/T ME-[%!"*PS2(+#-&45^@N:&72'#HN-Y96U;$GK_BZL6SR=\/J"P;#TU.+=Y>R.I*3"/0#;2F_6P_B:AS& M]KHY.XL%VKU^EFRK7B2D5:6L@0!-BVG:8%09Z /;%PPS M']YT<%B"[;MVCJAN7#Y2E>Z5?>_C[;H;925+,F*R/>A@[&<DT_/S^M/=;\D^=73V]4K]*#L"^P!;]E74EX;@_]7=U,#H;PT M.V(]4C(8*188:YUVKMKF\@-!;K]34H'"V4Q@+SH:^E.'D[YI2CMB=) )O!R& M;(T 'E9V.-)3T(4188G"7T6UNA#1.WRGF4"8Y9[T/Z@_J#^H/Z@_J+^#NK[6 MWC>A07!KP?!VST+B,4(;WIP6"2??#;]I=_XH-O&0-JB;6Z0:REU_)O#V*X[) M4/E2K5*;=&Z? C/%#L_)^^8C5=5E>-'@GE8C@+39E] 4.),$-1DLR\,'%7O6 MQ?ERJ"P.GN3.6_1:QU*26'EJ9\(SJQMTI7+3#C63G2H"#T+L%$C4 !5T5P:H"#!^KICH+ MJX^GW)SHDTW$/$<)W6[.0?->?65ATZMDV+Y MYJ>5:0]%T7K?5V<]2U1N>3\>2_C*^(@BVT&1BELY5N=\M:]+)%,&JW8 S:BED=WOUEO MKC_#V==^K9; !.8Z)%HQ^05DV$:HUCR*Q4SVJE&E&)_@M\<"L.P"0F &KRY- M+D?EZKN,DYSZKQ)V*1[UC[:>YMS=&Z;S#[S!MG>&7-\4!O>*S7[>6(<"?<^% M-3NFSXV;2%FV7$XZH9YBL]V\UKOX#[W)5FGZOZ57_QN4Y5?\^*(E3ZE$5,:Q M\_SOM:[\6\K;CAP2GT]$:%)/($Z3%=K>'_^UWBZ."M?Q>L'==TGN.BQ$ZCF6 MU^_&@1_:C\[,/D\Y)?5>&-RB6B '\2R^Z6[>%PXGF6)!!5&:D$L[9A_-@ZQ] M!$>NFOV2-'-0W;=)G_A4QN1%7L9'N?O[+[4O1]T_7Y^L"UTXG+WB"RKP)Q32 M1$$T&48Q)$%7H+.0!",1\$X#).T-2&WW*O-L,"H/DAI_/S#7=/6*0B"Z; MI$@LOCJ$NRB>;3/P)N(BZ$_ )<+Y#4Z3T#,FL0V8&,257,<%<4K6D-G!QLIW M4<0<&7)E@T_2>)#*'K&/A]8= BPYYW1I0FX,OE+6C/3XB7F+;U]QH&C1(X09 M2BU$#_R'A=?!V&OU];K;CCG7_:>K?;[V\7.]R>O D_R^C7)V*LH:;3' !*I7(U&> M#:A&\?E-ER@Q,5F9AJRZ2W[Q:9?ZW*8GOW[1*;Z4_TI,07%B<:=T)7"0SH6J MJF8"V^08!IT;^K?5K/B(,_\M-?]O#"%C?E^\9J,J,3[:W-/HA,8?KUAL-22! M7N8=HP6Z8I!W9Y^V+/]Z(;K^Y6'+UQIS"@$I5IEARR]S7(+CPY:/A M4]WYS910SK_< 7(*I9YB#&&J;)=KB&O@>88^PF0@@&OZV&AMVN.MH&M,(.?X M3W&[D%GE?/[OMO-H5N8HQ=3-KXS/F&.B<"08_)'NCG0._!/&\?SE&8JVP9Z, M'Q?MOX8;WOM ']=R]%VF,P$.81S9-Q9%]&+@X>*;$*$EV]2]V !'A M7,>;4\>#";&M-Y+E9)JS#/2C>G(+L\>N,H&%;][*Z UTZ3M2U>Q%9*"N>]*>AO)+8A MI6_IT$/(G__D,1D@\@GZCOMCO8$P=J O$L*.%*"QD4J"%0A=;4D*;0]NWJBI MS72O>':-US>%L8%E3&:X+#DZ*I'5#(2D5%_'Y];.(S=-UT,?J#5H#A(>C!<8 MPV,KCK5W>Q9C[R6&R93-^:R.+3[[@:E:6PZC'D?V/."D<+8(1&9=2FH^FFG_ M,.)+4T,7;;,^+2!9Z\O@I$GPKO>B5'T8$\ <1*WU%Q=AGY;;U\KD%=M"?S% M[J9_6;]B=>H?PH38_MNC@*\S\<+CO)X)/TL?7?KG9V7^CZAD@'-8KQP14&E6 MX #HTF%O$E6\,"TRK%Z]XML.T"-@.?H>TOH)S_V_FWS09P*5Y8X6MX.';$BO M'Q%6'!S)4R/YXE(9SPQV/H\1#LI6GQ]_[:'5^>%1@EOB[8=0729 R,*1KL! M>=L(E&NY@AV] '4'-CZ*G]6-#1B+F#6I*;3[V:"U]"!C2TL5[WHNGG)4\M + M7>.CEY<>SID.PTDP;!*4= D27Y>C/X B9.\(M-7T;ZA,"I--:DA]9ZJKAM9\ M?R3;7NN9Z$SPD_/;+<^X84!X^?THY 6<%^4+!P_APVE*KVAJH!5KEAT#7\V& M:5CTSSCRM%LBNR=NOU)_Y[+O6O2K^4L].A\?I]]^,2SBUG.C5F5I#92)Z80^ M0D%L9S7:L>-X"L]H\V[P5O#@I/G;VF$#=M'H5V/&9;QHS8K(2M,@CEZ=_.7D MEJ@FWG,^3HH?C'[^.Z^18/\$]4%M:Z.DF<#7W4Q@0^?-$C&(E@;E9VUSLR+9 MN8*[N#HH+0N*1BWO8@([XF.!I$:&&28&M;R;9=#U2E^;Q9)$X>E.VTL/5_M',\69VZ MN&%ZVAB1379C\+BP++$#.OR8M$-5&?L)7"J^6AAU!]ARI"%(;[EO(-M?NFU/"AO*TCE/4_$TBXM-KT"LOMQKBSL#&71I&Y;ZA%F96 MS\?.BVWS^X%CKTQC?I5)6:OVB'%DD"/\,PL&A\@&=V 'Y[=SI"V[CWUZ8Q%: M59)W287:;4;M?I!'0$VL4YK =U1WQ/4&L)SL<)6Q87\\R6=^N<'ZS;VW[87K M;E"M.H6W$']4BQJ*4&VO\(BF)?!!8_)L1U67\^M)#M)8DENX0\SYX1OVCEPC M+]Z>,+M[=\\880_V$8M\"XR/=:&'I4 MN!@"#]WD'/MR],MN?M#R0I!?U(,],)>^<0>@^3BQ1GL>1D1LNTBK(V=F+H M0T6&))\I//XS$_C>(MD?+A>< MR>#;H4?J]'9=&$8$Y>V_EPOVYW9=1][I=91^@A7Z5-B?J^/XXL&(!G8$A4**@H^C 63/5L M\(50OIFCNW3R7J):/DY#UHUZ9WW')2RK DX\7F"HFR6CIE)'#<*TS$AN^^PW M%HJQJU\T-B41%H15'_N:.0M*NAZKO/!VI^OE-G.0\#1),ZJ4I_%-LD*;0*R] M2\Z;K,#G9'2[XQXFT.75;Z##&FPW2PW_I4F3 K*#S4#/_>$FE0=?C2);)"-V M;(6=Q/M^TJYYT-*9@$I..?])(J]I2_+K][?R6 :YMK,:3X+QH5HL60D%DZ,R M2<^DV@3;J-&AU6^<>M:I9UY#Q3<@?(QA:!4TL8()<,6L"!(<;8.F&%_(WL^W MF4"SG,[\2 ]Y Q5WP6HS 9YE&"_6:17/X)=Y_EY!=%NK(3>WJKERV'MT#=84 M'YR]VL/[Z F=:Z;@C2':6'NDW\I8B/>?(Y]O-%2B69#FQOC*!**ND 4NC#&! MMSIVVE,NU&,_S2@.^=2!6JB)V)6(\+N>(R<_J9OIJ^&]5OQ/VA1PIT3F/RD( M55E<>9_I$*B7I90INL_^U);ME7RK2H6=XGRPS4YYPSI/8XR/ MT*K,"80AH=RU^3"8*EDTU*1U]_47!:F"ID.=>^X)9,C?"%96*=V=Z5*EW-S' M9]&[K?;>J>?'W=O/OEBG.M.;]:H]NGH7Z2(KVW+C%&'$Y.]N%!N4"WY<:T5/ M(#QKX1B3$WP)/<(V1-0X?WR, '*<=B3I2S;'UE,(#-@$YF:T=/K M.XX1953Y*0B&ON,734UC?;&Y=G"RZ3#9O'ME"J+GB:JMHPE[,;@#BV!$EFL2 MWX\];!)3?:VT6:[GSW7UBT!VR7G1'U(7')2;3[39OD7VX$FGL!$YO$WH+F@- M)FFU^9#7H-G\-X_[E=V^A7O-NH\9G=M2"-)_VLE__I;.%N79:X\&=0Q_2IX' MR=[>X9QL74UMG$NR'#N;]57@)?]#ORNC)Y(5V\^DOD0-U3=RR9>Y8>\TJ5+EX/N4.O/"!'RA&_5FM\2LC*6"?\W M3X7R]HD'#[5B^)N44+,8R27*A%-*P:1.YZLB)[/*$RY.^9A^MFXYME26P@QY M5 N*L=]=6C[3'(239*^1I5\(1>TI+O+:6QCR$B5N/'=A$N8]"2N28ADKG D@ M+,@BCTC9'S#<&XU=\6WM#][/_2BJJ#48<'^\[3Y=VD!HUO-)@CG#TT4?I@?I/9QQ-__G(>;.BGP_:1>]WRH93K_LD[I2^L4PFQAIZ[:B],1C:S2MEW%U%%Q"- MOW?AI-$1_H0MA5"%@5+X7 FW8FY3U=R_/6O_2MZADB$\ ;AD^&Z$,PEV'9#;T58#!5$BUT4>S)W+DC 7UR18"SIV/UASUQA M&PI4F>IK]4(E.FF0;%O@H".>.S [6X-]@2$RO'9H !%$?+9",.^1R#LZ56AF M\/:TG^!EFY-E+VUW'9NK8\6U)\C=]/?+!N9D["Q\99.HP0-*7 =IV%QR&EP2JJ9W#>K$_>C%;>HJ47\D0COF2AGZ,ATKXR MVM4AC-S8:>NN^BOI9?%M8"?W]P/)D4S $PNJ'T=3U5H"R;>9 (4/[)V!A3^X M]#KC05_G>]&+U>(WHY^<\UE9^?[,1UUUZW%IP.43!1\UM>,'JN@.L[")- *D M#3_^>I[20@YJSY: Q8@T"\'V0^/P?E$;XX?M,K6(90MRLP8J=C6? M8V79APQ=FAWH2-T;G$>LBT3=Q$D$+Q%7W[\V=25#.Y#[A[5_=L4TG7!$3I,< MJM%WUQ-NI=B<]3D4<3?]6Z0B\A[+7"N(.Z N.9/!%4$].<[X=,6,L]4W'B?< M)$#LT5=[K<4?63MVN.G3):^/,FLS]O,OM_ZTUF M;'.0?Y='UL/_U:LRBD&WF3Z^-M)L&ZFG[$Q9EGQN95I_[)5X8.E_P+-K?U!_ M4/_%J$XR)BK%O/D= -Q*G5+I02JB6L[@;OI&>,G03M,+FM2\#.S6[Y1K-(_? MPUU3:_L(7U$#RH%RW.MQI^'[:=GC#,B ZLGDAL<]AL+BW%V4,,Y38[R+<,<'J8'P(]7% MY"?>FEA\\$WSFVYE6^-G_^42"Z0G$VB30K6XH#SS?C#Z\37/D4)#;TXV#/D8 M7+6R@]'U/+R^:U)N7[<-(94RN'93-7]^R60"+![O(85J3YM'O'6O'?#H;PSB MA??=ER8^R6D**$=55$HJ4*=/FE$*135HV2[9]-LSRUT7&Y6?'*!:_WCE>TVE M9]6M!&''4I>";$4)T"9]=SN!F9UU*H\Q7[.4PG?A5\SNWSRQ9>U[9RQR$4ZZ MCI\\,-NQT2"Z'$(5T6E;_=7^R\')ZQZ6:NR=*I>XM9W AI=I?@]:, &.%=8^ M_6ABOUZ3,!]@O([?.L(U#,Z@2\SK40=U;Y^*H??7K\1O>>LZD8XGN8ADYCO: MV3N<:72NJTTTE?3Z6?(2,'J"Y6Q[\TDE4\W?4XB-U>Y*%!:R5"E6N MNTR<3MMX$\'B]#2).N\WGE!2*G(04V.#+7.ZU((]W*^ZZV,7;L=ZZ#Q\\:;P MSMF_=&I8U_C&&;'UJ\J-!.)%O]K9MVNI]4Y]2-:67OZZZ_5U>%:GP=/SK?$K M7/)@8]4%)XGO.IY*LW.VPD:;GA?L=U0T,@K[X'MQA&0("8:.G+9N1['GDJ6^ M!_?.)_C.->/1:V?:3S.!QTL_L9S!/!_P_!OI_4@(J&'67V8K<: MLZPUI" 8W80--,LS^8 MQ'+?3=)4[_B $<#XDM6,]5>Y4UL_MF:SRZ%6;:6]C G -"U":IP"GS6./IEG M'%D!&\.Z?CZ#^[GS#BJR/QI-9W\TWJ)5'YH_F=\2;]YQ7<][RMU]/V$PPL,0W#HLQI M?6\^55Z7YM$L,/"1R4$38<_P!3MJWN_(40_FE\VHEL%M%!C]90 L-FM/N?:# M6W45#L&9,#N!S- ;7SCB>_HKPQT%2)41BP(I8_G(3TR@2C<)Y=F78 /G1<@? MK7S4]ZQTR;_5B>_XU["%Z[N.A2K?$KFYQU0N3 ?ENNRZ8B3AB7R1?,TVHG@S M.U1?'U]!WV,%SX@C93.X9ZE";U$1^(.F: -#KRU5M1K!(A,9J0/+=0_-I,,. M]8TV"D2C2(Z8?<'F5^%_4UF;-B1-SOZU'!I7[#J-MJZGM\9X9TS)<,(,XI M6Q":.J-8NL::87\W694.%'08G#4EMO?\6-O^1BXE">R9,3(0$LV=8P*#]M!C M:RC"E(88Z$FL$8B&U#[)&#KPJVQ:)'4\YO6M^.4T5L"*3V!(:; FAA>(6J>I MTIO/&N_;/B1M,%JN*V 1KGMV0T%XQ_\?=(>Q;/ F9!F7H-A'LTR@I1K,$S/W MMN %]@ZR=F>?L)X&U<0135 M[2@^,DLI7"<[=AN!I5VU=QQ=HQV4F2>SR$UT M HO;135+\@9C""Y>DT9;M,NCN@XXDM,2IA5W"?>7I/S7A$SWL(8FA;_2H-[K M6[L('18UI4]J=9SMF5C7>->U"=5$TX2I#.Y7!'XC5<8'9]E+XF<)Y9YM1M3\ M$"'ZJ0[8:U;1W+DS&A>@C8^#5CP?K=+8&:TE>YUK8XR;>V!H#W 7_W+)R1=:8%.##0YR8[Z8 =6$SENM/@,/'I[ M],O"B3N(E[QI=#A8T$O+A2G_P*M#A"TK+WO+_='7_K\EZQ MN6O[/H5P^&/>,0%".8YT <]=@F<,,8'*XYEWXE\5DMW"J[_6%K%G-%8GF7"6 MMC8OYY6,M:(J,Y?+R5J41K#"@]1([&VZ6RIX!%LV%:Y6W7B'^/H)NML2\258 MZB-=7P;#VW?X>9&Q20*N^O((5@EN.P="(OT1N[B3I \Q\T.$FB?*(Y+.H%)OV,'YUZ>]!$ M];"_]C+;IYH>(&12@4.@G@FX0D#9ON5 JD98-OP=*89V9%H^@H_>./,Q-3#^ M-,URTN53 N?C\V[PM;%'R-O4@0K8&O$)Z[:YO7N8E"H256C=TBGM< M$VBQ1!0U\7_?P?S%+Y'.V>0C,DUS,1]PKC$.)BH92TWEI3CL1_IL-"B[-[(0 M)I'5-3DKWE1X\N0X)6G#YN<@SLWE//!2.9&MG_L?!9UME[5>Y7_T)3"86X7Z M^\[ZDN^_ %6OD8BK]5UNH4*_UN [4(E9)L\4+;H+X\2]WIEZOSTG;B)-]>N3 MLS8Y\+Q<^+['A23[=,O/K;3?;=LOFF%W73GW4:J9 M <#Y@+8,MK!FZI?1)KLRR"YD)YY-8_/%F?M*7D5+M6LJ'Q_Y:??^M ?G MG4+/&6_<+0%0<7YE)" +M^)-I@7#VM9/^.4[?8M6?O=1J7 B/59PZ%@E3O)' MXVSF)9ZLIB>B.4S ;ZTM1L4JO!A=+*ZY'I2V$3^\TT-AU4+AM8Q.#%L377VL MRWN6[Z8DEN(6:>UC[3"PNGHNL39YS*ER7H$,%@%?.JA$M#&F4K*X13CUMV<9P? MOBM\E1*[Q/;I>+MXG)6\!"$ M>JS%,GA&C>00-^BYY9MH2(_'#X\)[_;U:;E?[(V?LBBW=YN)644J'T1G"Y.P M[=APG B#'\R )EX6.3T0EO%Y?3$JJ5%K^=-[PM Z=[Q]E%8?^ M+Q5"D_-FV(:N^YQ)5;S:6>6[3[Q/W?+^7I:34_H#>88U)&T<(0LNS-"AV0X@ M51'72-:K,01'?HK*?)C]R*LPY]D;"QR*!"V3:WR_7'SZ3\FC(17I_ZCG]^ZL M9KIF^LF"7 ?9UB_^SR\%QEDKE\KGFA=NU_[C7N;#W\6OVOC^_=3+5F!\^Q_I M=NK?A9UU0;D5GU(O\Q&YUGU(;Z/7XE\_A(Q@(TLPN!2(^$0F(,600;B1\32A MLY07_02R;^*1D0 -_N #,[11$7&+LO[67Z%( M,8$;,% .OKQ"5D5(@O.L H0=V9\C3#[E*BHN74.]ZG#:S]-A-V+3"[6!".=: M/_Y=N/*J,#8_W$/G:4 J_E U=\"\BL J8KLP MX&":'/O* ]=V-%]CKW#CIX^19>=/N1T*&ZA_E#:4ROG>*!X ET[3<]>#V?5+D M+'GYQ2/:UNP83=#$]P"JA9^FRRJSND'OV=+[Y,*VIG M;R8N\U^T[%.MT[RUJEG0B;Q9#WVY8(L8>-CYY=^%:^@ M/*#C_ETH $4H0;*S;%-(DP91)<'H4SC0+Y T/PN)H6G=] GD<3SQN>Z^>'E- M"6+KIGYL;KQ[+I]BG(O[;)H7&V5%B(U50DY2U4$F,%M'$W;K1)&L,0E&;",( MS5P//)^WD31"JM_ S(L2=FFF_;KAU&JYWYU+5,/U;CG+#O7Q1&]9,TG7)[9> M>5,@JTY!47408?1G4$_X.(1%I+BT$Z9L'4C'TP/?P+L"CS06'D34!S;>$-R5 M]$7.>'LHP.5.)6(269#[$'K,F12T\EZ!)KB"(SS^A>PSDH,>['J4372CR7-> M"B054D3ZWO*%4J\R?K;0G\50C_;.OZ#B9,&ESN*]U;0S=48Z_:\'L09F,Z'YX?H. MP:JK9[[)'4?"GF_QQRZNK1)W__1X6_@?S&(M3N#$,F\):'"?ST6WK)>:$U,N'R8JKMC%.!<@^/G1>N M@\= 2+8P4#&H SWA,C-:3))6@UPA82,,%$K-[B ,$=$JV4M%3XOK&^$WM201 M41RZJO<,5Z4_>LV#>%=1]RX[HY[N0-_"&01:C.PC&GD,5W85K6/FP;65F?TS M8PU[#OF4T8$A71$8SZ1\(]_'$338'+KSE_0LALL+/2;:W5,71Y7OJA/9U]T9 MOW;M_7@2?SRDXR]5[\? M2]D6[ \__5'.]B>T%3_!HC0QK"G/1MJBQ'P8OSE ,Y3@<2@/,G];-:3V/<7D M8'E'BX?C(VKKKOMI_7=5EK2^<$2+5Y;&E!^T6EJ1]X(Z>"%CYIN49GJOWQN^[HK7YC!SACCFMGP:%IW1&)N7\.@WM ML@&!\F#=#@RHQ 1H!\8(8]F<<2AW&#]\RC2% N63]4P5@;1E6P><9:RKZX]U M-9C2]J51RD%\4<<,9)*',AC:O>7K_C)KW?ZI&WBN#K8OD1IU0X\W?@L3B2>= MQGW5)T3&M7Z%;B==+FH=G M?6E9]EI+N-H33. 8$_#O(9XQE+18@B%4;03G^JI)FFY9WG[ M&!LEC=^H%4<:/:&UE:H*U->[=:?SG^-^.4;0K\U\[KK>=?S)%:JV3/'DX(.> M-=.YBQ"2:1^HY+:B.K-.J:!C<]]6/O]A<=SBYM)5]_>G:L\*5](%R4X=I&P& MWRK]L8'4G"/-DIP93W.Y5[_N'-H^M )AL.W:SF,P =OI=/-V:7G2?&3U.QV< ML!?%WO4)?,EGDR<_6FZG\3'GO)W-S#=*6=@+O?CGH:<5&?8,!9L#;3G">=97 M2XW'BFDCKDIUOWPS208]+&)\F"I!VW]MDEBX/$74%R-VI:.,GF3:FJ/-$Y)^ ML9+KR&*$Q=###V\CV?JY8D#;/HPPE%#""OK85O2QZ:W9L-?O@J3]W(CN$$L- MM)F+-&S^$/:%02C+1U=J1@,AH"G*#39>:#VR.G^S-LVK[I$CVG?#R_DPZN43 MVW1EL1R]ZYLG\ZG=N%Y,ONMSI:0H]8O2HN-MGY0%Z8([4O07A4R@+Q&Z]=/: M,,B2%!-5W:V#/0#W: A\+GML"M\CJ:DP@@&0@=OOF0"/"H/G!?4JF8CBZ"-( M*<^O'?-X^Y,HM'%C*W'LVM:9,,\?4:Q:QYC^TDC-TP_,9)W_-_+-#5\69*M# M7]BXY)3.3U7>@9YSIBW039*@L];FW9Y]5Z@\G"QNC>AH-;)JPA,K-N8[8+_= M?UF E/VY;AAY;.'!R+>0#DS4BH.ENJFSW 5G2$+\=M\,)TT4U6;/RL,T6290 MU;6,*UH2]:^=-*M9BDP:;[PY,7[+;6?L;:<+P2ZFNX56+@(%(J+'S)G:P09$Q6,JG9')TPYZ^#(OSNYK^]@G1#'5? MF0D<7T6\(&$97(U4 <3)7ZN!+ KGR5!O0'-^(4N_H>JBQE3\]@LNM^#$=U0^ M0#D8_ CE2L87T(.$;6O@T+]?Z2&N?9S:1346$C&:/]+P0"7UCS9/36IJN&S';91$)R![H<26(RJ@K,#L]]L!B^![!,W MR(H<%%/ 7,J9:?OBW^WF8"=K>S-$_I'"^P>05OPC#&?S7O!NL#D1VN8-.3VT MY1.L394_JQ* EW4)2$K6U528;FA0,;,I/_'KD\6;,3U/%\W 8N5 9;...]G> M89-_;>@6?D3F).!;X0GB)_N-CM"T^VN6CG'M\YRX?B6R+W ZOWCKH.QH@[WR M ;\@DWW/%[HOJ/?>-U('IUCVUZ6G,61")M"M4S [DMKZ]_S[_MF3A[K>1?OC M2'97!2X])2O0XW"$,I9>H1*X\:&9?G)RE/?G!XX%BY]R-;]^Q>^*/[^R]_:& M@=].F''06!/2D+@6&@;U'QZT&-"JIJC^4]*'*?VU+6Y0SWI <&X%PH CYT+=;7>@C M0VU0D>IRE?_%WGN'-?6M^X.QHJ"B(*(@1 7I147 D3E"Q$0$1&0&A&4)D00 MI!BR!:27" @H"I$N(B"]$SI*E1IZ2!"0$D@H84/:A'/FF7//S#WG/K\[,_>? MF3_V0]E[K;WW>MOGL]=:[VOX$>*H(1'JN+:L?O24V^DHLG#I*X.H.J@W+\DD ME"4$ADW5REKU9]!IUUJQ(IUPPK-P;;_%&2"*0/F+#1E>)(4D?P'Y.HPI*JD2 M9@C-ZDNC">JC!S=7X&3R/^1O.NN!I1@H@C*J2TA9)VB1*1DR M*=;WZ'&OXXFDT'*Y73_E;;W-AS\!GB.8,Z\F*#V,$PA:&KCOF]94SY@1S;(B M^M[+CXO..B75B89#-T\WI&$7@I75<]2JC 7^Z!M0@!?\Q/;W05VO\[@[BE!% M;$@]8@N;@1T9!1A@$QN"#H+^XU?4&@7.XBZD\Z&>KSY;JI-K(=9J6P+-Q2W4 M"*Z]ZZ+._'M.4X/>8IVV1=NW.^Z78.[U%YRK"+#C/42Y+2)B<.ODVSIT>KI'F%1[Z8$:)?B2XWR5XQ\ M=#B8:TV1]/>X6J,_[6*KT[L^]J2K-?6KI19RK^9@RJWC:(DZ;>9GW!1'ED62 MC5C8;= LTY+#9HTQ,KB1MQ'.^VQ&\I]8?M^,$C'(\^$- J9B"&6J9*U\S>F> ML5Q:1%7IWA6A.U[9AM6AHH7Y!\K*H!L]G= E/!Y6O,+@]Z+=8'ZLB>!$889T MZ4"I]P5M'.D.PFH9VIK9^L-B4EQW;&0&!*+O(HMZ_=B0WUY^%B%%*],#GG., M[WVPJZY,0ZHW6,AI[;&3H0J]2(0'U')CTZ]+NWI/9V"N*H?U\X:::JL* M+N,S&=RT6?>5S2B5HMI]_5V:[+$-ES*UN_A5,2U_W[7_T\:4@CA@ MZ@N4\A [$L$ZZ)+N8 YOSE.RH@*8&FLSE# %WU"6-OU@@#*FUG=P]TDOQL=N MLX_/H\1EZOV>(,ZR?F(A=<([WSC@=%W6*%JASZ448 P$>/:$O-^&K"S#5/Q M:I_%PKHX50 7&TZ+I>.K:C9P,=NV5.1T>0/V==4N*JP5&;8M&?SM^QWWA>V M6T_%OK:^68['C=PP*$5ITF]R%*D!M[M&_H5D,/ 4&5R%BRZ5!&0(ACB3[X7V MDMR&W!]FYD!=^"?*8#M#G*-Y>[UQ)-Y0KF9@+)V6.+!!OO\[I.;[K_S?%4F: M>#[$1$#7GULMBR$K""2Z!UO(M91+5[#0UN!&G>A=SVW6S_O6<; 2A[[:U=F2 MV<#Z\ZCNM:EI,?%.P?2[0B4KP4I>' F=J^W#&FL^30?O!>^/6U2<'"Q_A][W M9P,^5\ 0PU(L$: 4H2L?84"I;L#7VKS]F6KQOL=P)G]Q?B#:?_/L=,RG0=@H M+^L DF)/0S&32F&GO<=H5<%CK;T8)7VLQ<-G'M4C-^2&(DX1E'Y,9!QQBWQ/ MN0NSD*6(T2:87]1LZ*:L7^9SS>J 29*^@O"("THINQBKT-Y@&3IH^ODIY#J6 M]%0R"[)<[W;",33OYQO#U+LJJ._A^"*7A16\[9^*%PW?XD(7!U@#N4;'Q&L7 MXCZZ(#+X2FPGK*X_W-G2XMD':WY*1LU8>=;:B?$D$Z3 ]3$*&.-U[Q>U^PCCEE):O>YW!^[ MV_\M[>#Q8U+UQGO6)'/$XV)U"N9VUTTSW^.FBF EBDU P+9]?:T2\1AU+DQ. MW-LCRGJ5YF.G\EHQGJ>!3_##V^5=-2U;+R/M[/+/YWVP?Q$Y(R]&,PGS6=C< MV((B$[P5WU&>GF)#'E?>O8]>_WIE;2R[YIVIS%+L2B[,TBDDE&%$Q' Y(O.] MJYM?"AES^*ZBLFQSP-_Y+N(C0$G@Z!0G7CFE7,8<&4?!^EPUJ!97+ML<53^@ MNJ\ MA+KQ(:$P*9"H*?0$@MA)&"TF%:"O5>CUIWD73'P]-G&[EGRNP(FW6D+ MF6.8S7#*\9$W(S!# IJ NL=$J-0DLE\?DZ4A S1P2)L-(DCC26U/:ZX?>EF- MU--8U@/@YF5X)=?>FG;77>,,^88&+@=H5*6KLCJ34O)\+I[KU<7[0_Z(P\R$JVPJ) E]/^X8.[ %[R9=&$8=.$SX6,?8LGE9ZPQ(Y M]3?>MQR-\]GBN*6#!(8@G)8S?8/RB07I5T9 MT0A$;1A512&VC.^35,%R"V)VHB<>+;"S0!IF@PVNLVHMF/+3:TETFXK \#MU M+V*W9[CB^7F?FA2D,?91LHDAC;4PNB0QL2F/MVEH[(;#92L986/DERAM=%;Y MGWS=BO"-NJNJ:VJ1=VVB6V&$P7>U%N43WPVU!,):_ZNDFP*:S9/'*;BHRSZH MZ]/0P\-.HZAI_N&%EXYJEWAI,0U&8#A.ZV#)JX!^Q^"FH(5H\<=!TI?Z=VT^^MY%"==RU'DE9 PU^ 7<=/Y9[A?EJL MG_G/TS^J[EP+=.R[\R*F;O3E*S-T/F/[!2+KG:FG6IN OGMY9[6Z ?)PLT^^ MZ.E8;$G(:M<+Q39$,Z.G=V?! *&,#5EJR]$D8L8,:(]C%RZP'@YT128]6/.M MJC MQZ:2E._YS-;%@F("OHYP+'F*># T^M1_(OFK]Z5H>CGIFBMR$KDV&6 MQ"4O>@N7KM5\=0%CWU(M;X:'%5*+*OKA2#F1;#W$:B>J6DR,6,H5ZM9]7;AM MLZ[LA+NL7 "*FY)SZ9>=7GCGTN28V3/)>[9"]%6+YDWY?<6D[,NQK-'C7'VI MQ9P!30$:M'%V$5_6$6-B-*3?XU;5 Z.EK2G/Q-^M;[F2!\EVVS(O%KN@(POY M%;[AUA:PRI#MVM,FE>AS D 5<\2OA]'3;R[[F],1C&*&':XFX>-L2 _ I0T MC.-V8>@[ENV>H+H=\VZD_S":1QB B);)X]36*,%0A@#)[_K#_KE3P6R(7FTT MZ11LPONG$2A$RKU5RN44XT!U>WC(=;]E1;BK1N[J*R7M<*EOT3?^#Q267E-3 MTD^VJ\-511\X>VM-7RGHKWN7'L;50[R4UQ3)'$RP[P4S"KW79]L:.^U%32@\ M84I7;=0M/\:YF>OOF .GILA/;9BC0_%"I9E.;L\6&J<*O4<_O3OSFY$X-S;K MIVZ):X%% 0[E0#GY/@S4>:T6Y".]/Q'@ /Q]^Q ME,"@ MY0H*R-S/ME\5I\ Z^G3;K53S>UY/I8VF\^/^YOZ KTQMB&D(=G\P/# M57, U.?";5@&.D@2\3[UEI"4:5] MWR,'C#']LD_5)]NWDNTI&DYT_!1\R8^NS.HR"1-LP+WQO1OOGE.Z8?*FY]69 MMNOYY^7/8?^+W@U61.IM3.Y-++-%DC'=^%GH">P%S.BMZ@?-RZ MAB(3"YL*A141&E?$3,%RX(LW_0'FT$^4?F; ]^4S8>6J?3HB!IO.BX0#WK(- M!-YU*93BE &W8Y7"1]>+^[&99G#D(>"OR'W0>,=>2\]"9>J1#?&1:5LEN91//K? 7*FLRMM,/",2C']#GH0R_&7CGD(%OX$R,!.&&-#2O&],(K>"BA15LT))00\6O*/*J($&LF2G)]4P?656A@(H&X. MM$Q^E0B?M'!T>9)X-<;0-B@FU+#,ZK7(&VS>E\^[/[BIJ7Q7[VH*BKXLM_0* M]$S= M+Y*F"E(A, V.INPY6Q::UGH[XE55\F1V/J>M/8L71+(.S.RL\K)4!O98PY_D M@N;"R4H-C_^<6O;,L5=QSLJH1C^AFQ=MI2K-B.D51Y4N0"GW "B(OP_J^= E M&;LOC#/N@\49U@YUPCHW'4JN2]_3?%5@-;UL8=:F0L5N%)?6\"2\MYU"@%>4 M:$\IR*4/G%&(9G[$/<4%O>R7]&=!4;Z4IQ^__M3@T;,1R6,@W:Z>/A%+[(-? M@=1\F,Z$^,E2^VE-S.\$;L)*$>0"*A_O6" 1S^#7H]G4 M]CVK\9KF/3SI7=Z*EAVZO/9*, BE_*SU[.67C;>;-TU5]_R(>.7C1LSP?.NB M32& UU9)W3#P7$CS=>E?RBUSH8RKA\-W)3@"I7D?N:\GAS/5%X.8L1Y800<" MQ4,5\PA,>\(:C*-=ZHU.<@T['^.Z[KVL&X=GGI?LJ5OQA6SC:(^9Q:RS%JSQ M'283X(#N3TKY\,5[K E]O)B:Z(^RR')L;5$S(E:':?2(=;C4#@GG.G_^51E5 MIIMIQS&6P#] !$Y [1A%B6@0AE9&Z0T)&E!6WG@(U]I:U3WIB7%TX=&7G:X\ M$'ECP4!@JX?:X"FOQSKR$U02#-FC2O-:RORB3]H? ;H(WQN\?P$DSY58BBZI M:[UJ8PAN=S27!K( MK"W8D0D;Y3VKWU+^.I'K ]=]^T$FM.QL;VJ>3.N0K%%.VG7,$L38?> M@3,]?1-W#&*?UB\TE,$+BN6QVI_/HR6I6+)R@>,U@X;ATOBW9O##2VY=$KG> M,44_AFC?;Q?I\%VJ5A+WL6I)C"BIHW2%,(2E$G^5P/4PM%,]+M^PE)"IP&5? MVWR#/+07J_V:9.1Z3SB. K]>$"9]I8_0:'V!U:5Z9HE?34(/99]Z43V!<&__ MM7M<"ZR^8QRZRL5 /VFJQ5Y%>+5$W#9&>[C MCHGW,@KX-2]?2K?XH5+AZ?!>+^;,-@UW$9C"\>00T*,XBH&+<-/-Z*^<+@6B MV@^P-H>)*2WY/:?)QTZ7EZ*3_[NL-8Y8$%KZL.[TGV.200KC"F%.>W(53OK( M=D%>>IC &.)5.":W(&ZSCP-5#BIP)'$K:(6Y7K*K4(L39QKU./#P5^HK-L1/ M'DK9J1BY+F7-AA#T;@@?___;_G^XK4]B*W*T9VISB9H>Y36-#"_A<,T;/\R/ M#RJ?C'6L7YS1BA//'A&(0ME0FUA'!$ ?YYM[_* MEYW(;MJZRV/I>G8@<=70LF=.=;G@LG<%:BSZRH?5WZ?LTKG8$$7G;(&%5.&? M^=VT9C MZ(/%I)Y>8"H.03%<&;,P#FR%EB>2SVM$/.X[:*J51''B;QH/)3^R*RG_,2W3 M'#W?*IO)&?F (88*Y42\8!-B>),F'=V.O_*]F""09B^"_FG/CY2L$^^IS-*G MWP8:GN,<>C$AP'Y7->$GL(E8Z&'X([7B<9VSJ@3V:';[QZ?G+16MFS5J8IN>.@X>Y'JP>9G)/(W?W[$>^[P*N3B:Q5:P9OSG/:^X*7>0YF^%;/<=EUDQ9?1),!>$YP:80(*,R1Y.I4J'<66470 M,DW;9YR(<^#=#]@*&453*+EHK)ZEQ"\3NX6KK-68)KLOGYI:"L 491J?9Y2D M.G-4JD>;,9D-IRJR>/+H9[WU.LLH1X)(6(%NI1D]YVSYS&(_:V+"338$W>6C MW,8XH40;!.>OS[,A1;@E;Q&1%B!K/IMHEX@_X_54N ><:%]K(]7O)ZMM;5DK1'S!L3;6- M5@__RG4#\D= MC=3/=BKS[\I//[AG,T8)(L3\D=_>!/P8KB?^P;_Q%J@5QKHD-B;86TC@* MUE(T",W77C+GD3EC;9+OF*JM!%^5-N%W@2M6)U&3#^R_\6'LOGG-C-N8'D1, MIN_37_Y")#V9"CEWT\F*9M7F\M+8;'M4T> M?CL+/ZH4V%[\X8E?-J@KFKVG3T,878\K;&M$\+60=HHA_S2)<;IP6[R\8D#A M:=VJI?NI$PMF B=%;]X[0+8F_),?6CLT=.6K=7>2H_HRXBC52JV?9^.9FE!$ MZ5CI1&EIG!^J*UP6RN*S0K""> CT>0FN3M6U.-0A3D?H&@#J> MP/9Q16 E,_T_7+GG<7C;/UT-(^[4/?ASKY8-J4MX_3_1L)TJV<+WU#7O? ?G7W)2G^=X_S1X9ZK4^1,* 4?BED:K4C'^5!25FG4\W V-$9 M_/ WN=_09Z;)8!R+QXK.#:**S$'"_4'QNSE9?Q(EL4]C+QN!IXVE?JY?^3K[ MP05*,@EG0\H3M[ 6^"8$Q9QWC)\6Q8P#B!9 $XRAQ:IG$5C#.U.!85K)>.QO MOY!V-@3SWFZLO#MN>?IZ9?=^Z44"!0&,3*KW@K)3B=&>7B)"#UT^:VLTZY*W M\E!^')1VDEFVL[%GWYXJ2L \#.()/723""/S*N@EWQDO)8S6=0WX7 RE,;&# MQ;BRJXU92OO>Q%,%;/^K2=Z'+FB;/?RBC@AX[FM+S7^Y252,_O;[">8V_[G"W;>S-"M\IZ\R99N: MW' \CU\(#1M\,XK([EBYJJ7M98K*IZ&JKWN>L"4B(BJ]>*?6$+FDI[EKD\>B M3.\GRA;1WNJTJRU.1O7]8F'^%'35>HO/+M?RQV# M!>VPOWL,^*,S_5^VM'I@F6K95X!Y0_CD ],?DQS<&3"";JRB#=90LW(RJSWT MX9J54_3WZ9[0%-F_)_:18D;7/'S@"!6ID0EB+1# )Y;!EF2=E=I^2&G%-X8 M=5UJ)^QS@-%]@ \KETT%B9AHZR/4[T937=I-IHV\$F)C5?4U+]TQ7H:'/A)X]J[ M@92^Z1^F-I,NN::\RH:$ U.1L!).I M P]#^R?.]Y!]FGJ^ZKFB^O;(+^2W08@XZJ6T[L%GP M\F]?^TJ8&+2DSS4 ,S=8<_B+3M"3(9=#M"#,DY3#PU#R[9CP[32#8TZQZ5J* M@:XC#X^VM]P6^X4/0KER9(]B_2"(UBSV"+ Z>^>K(D* MCO"DEN_8XDDA0DMV.[V-D1*"H$5K1;$AODVOK@+*JDA&_!]O*'F.\P29(41\ M*)88LA0F$94WKL6MDCHM_=[*7.Q2\+'1K\E%W_>ZQH3=\$>:-6EE@OPR+;)Y L9)V:9C$Z<_U-[*"8W3,/^9HC4^L%<34WTYQ$ MA? %J*NYYC6"OG[C9?A[/R[T_H@T?D$,XC'C.&Z@@0,W;*WLIUP_4,N;V9 3^%QQ5Q1:W"P$ATP?$70\E"VFAIJAFK)X0D@]HHO9Q+DE([JZD_ED]G-= M< 9?!$T0M* ;ZY" TPQ[2FOEUWEK:'5) M^??"?F1=S[Z!_**:7"6IM2.#QQZ)I6YU&^@R]4!CRA@15T\^X(TD\M9'P(Z, MO-T;,__2[:_^8[T9;FNW">2KDI,U,I0.BO$G'\O?U=7G6?8-L\>]7XFWWDTL MCC?++GX97I?CF%OD2]"<]$]K.#Y:#Q6Z FE+% V3!!>^_[V#Z6W M1@:ELMPQ_9[,UB7M?.AZRX84EM<7B#T85!.4C%(._=YF2'66;[:I7BJ# MW-KOZVIJPUS8EOQ7]C63^_ZQ$SQ!,4$](20^G'2ZXYC!R"W=3[ $GGBT$$LB M.3X^Y:/C"6RVN19RKQ3?R;.1Y[0_/Y+QK]_SZT$IYI_B[C]YA.T_<"[FZEW/V 7QK*: M>^_,R=PRSQ+38.]T%K4<2*0ULQ, M!^P(H F!TL.&' .^P\K9D#)8*1M",K3WG-N"VJSBIF=/J9#7,N@5WF&GQQ M/J'U%+?OT/TL[I;^O:(??C,O(JZV6!H$$"U324[GI2?."^>63>+ ,?;>X+.HYI-5E]9=OEO2E!; @O!_\%<+Q.;PLP MDYX!K)Y'S^#7$-/0(QU$Y-%QQR,'M5Q^761)]<@ V0-"K.A_PDJUHP\_J:@> M-."_.O/N(*HI(BB^8+;?X\^^07OK" MOSL+^;\1K])RY\OC".9ARW+B98^;?>['8 L$'O^M>M3_YI09!)O":7"!021"N+D@ MXSC/E))SG=* 5FO>%P)*OKHB7GYZ7/[;6?MW[_/D!\?AW)1#L3_&,A/,H 1E M15 2X(RV(QL"2B+"8;8(4(H-:5T!']9)4$>JL,TI"KV7-PH#&N=Z^!YJ)".C MRA:=OH_&6]K\CH;[M9KV#'K^ME'>%)HA>LT+8L96J,Y M31C]2.PAD^EJBU7:\50#XFRR3^KXZ"+)N+_&F+CX_4[5DX'ON7JNMN^9:0=[ MQ5=_3U1)"U!PMSE#<(7502@4Q4TA1A-)7)P>-)VWM0NH1J3],?:?Q\:\T5=A MQ2AY(OV^D/JE/IW7"5,_55?F*CPQG7&NPVD/&OJ9R75[T8-5(0%H>10'"@8$ MH1Y1LIN9/*TILH.IE/P/&=YNSQX74C('T/<=$\\>4QL:[I/EGU4Y.>MX284^ M<7P7Q0Y*T4../H4-Q^"FWN51\4W34]&S?2'1N\>A)[#B1[3;66"_A7 ME/,P\))8D'%WH-]/;O<77+*)CE9?\HW0]^?BN55H(_3C*$,33[4%9VB2S M:(4AHZP89'XD-9NA2($%YBNX+GE4=VS<7BEU7,Y_'#17$2O5)T4ZFG8C-7K> M,@3QQ2'MOU6V[)\KATKM>?GO$K?]VV,--QI'2P#]Z!*HTP/HBPRM6'AYJ>SA MJ*!*44]F_UQ'@!HU+D#GS]=O;9EH8\9.D?E1]%B=(E6N*MN? 4\']>ZN'2SO M6V?R32X>'%9+U!&[;IMC]9JV)]/+QIVA??&JINO2YJ5\TY / ["AB-'B^R_3]>U-WM[\[!VG']HD,-% M_VYP2ERLDFAU(3/4ZO-;@U$..65=09T"=795@.E41%.*Z+WJ@,5KG2>6FICQ M+_=AON]-:J_CJQ,M*$["=^1T1+>[C:!E%S9L5CS*RJUZ!WH1LB@.K0GH8#4" MO*@?'CBH$UJJ G,]CZ&:]F,*>U.<]W?W%": M<1*5',+)-7!CF,+F?1UN@\GI7&O]:ZKI35LM#B_HDB?SQO..)P*^;?,N]F!Z M"_H$13L$%L9P)%G!;O>[F'H.I7ZU/E]SM"!7Y^Q.C:+5W7@6MR<'RJDQ\TJW MU,0HTOEWBD[K/YGBY>%Z>/./->FF[ T<^7*X^N(O%"?R[75GE@,.=#IP$HV' M07%%OR^^+5P8S1A=3N>Z.H*Y<"L<&/E0R!Q=2C&0DT]1Z(/(]([X$RQAS?-4S9'EW_L">5?^ M.E=0CA8"&G@ VYX#HHUO$40NND M6DWU._6A+)JJJ?35C81I-N3I)=X\/P1%DG70@C/&YX-_NM1JRYF,985, \8IE1D0FYRR;V>MDT/Y)FYL9\;5T05A7/E^ MN2I"LS]!4A*WK=6DBUBP%5C!'H9-Q2"^ TU(A9?@C4='KN>-ZU+H6."<26?"1L+^H2B*3TM=$5 MB3U-3/X;9:-<(^M6,L(/Q.;YON2U2^5KCWG9QTCKNMF 8G++#88W?L?5"V2(G?@85P1OIXKZ1+1G:Y]\V'K7R\2Q/%L^[VEY M)3WN?P<*[L#?< ('_*V>]T4NS=,?H[L1I8FT-H82&]*,(._LP"AF0YPY?Z2M MXG^L,0BR+ T;S,L5"8/J3RYSITXQ#E'9D-<2% \3I=;6OU*.%I??DQ"Y05.O M"Z[+X?1_AS6&/0P\?H4(-6+B[/NL%U_1' MRU]S4=\F5CS[J\:9"6EU>ZF\#$&CNULAK]D0.R0? GB^:+Y^ OK^0:) (QC" MXC&E/W1ZA2,>9F+5^#/LEX%G"UZJU>@Z/:TD8K.;XA$B$!&945.;@=R4?$%^ M7G.]Y23=SU2^N4LCE]>$ /('8$CHI%Y$K.A9SMND@G+5R-))$_ M"E$73X^AL4Y\Z-(./>H*BUN8:A;.._J"M&_M:@."9_2CYCK4SKB-:*V..%JA M\:[21/8#+=)>L5V%89":2@P)>QBZ]NWKIX2" M4A160'V6+.BL/;+)AI1ZCKWRPR$NMLJNBN!L<6,&)'P7B>,!K?!#U@4DX=PN M#):6/7J X9Q*P3&.C=$P V4UV+TNWV*J]+YZ!Q,VC#^\!PC*B=N;@;DL4K$HW;L0TF*,H]$L_L8TUA&8"Q0(YK/374WW>EI1SU%TB^V.(80/E_60- MTT7K/40 /&??"A]3R/GJS7_'FBCDF E]!P&F!_^D[)3BE2G1S6X&H.?"X).! M^I1)^!3Y"H=_<+">644"CEYFH,JZ]C9DJE]P&Q-CR.$D)-VCJYDA>1;+*"KB M^N$=@2<2O;K8$&XVA&9'G?P"\R]5VO<>=C]*1?;-SEE)VIM!+Z"1AW[>8=0! MYE9:P*?>K?[CKS?X:@YP!D-(O!&*PYX/[0=\Y #J KF$%^0X MZR67-+(S+L0K*:X CL.[X@R%T[#MF'SOD%"6J""O'N/%)]RZ/V#CC0AA0[R[ MW$IQBX,REUO![U!YB/7IE^+*/^!,V!+=ZYV"^ M8#.TK(!Q'-;Z)A]'MW RX6A4H%8?.>_BTJ%CK8!HZ7;>9W0KMB@[N"Q9:8HK M:+A@PGE"6N'V9F=#U,M1WM>,P\1'7,%JIS+F4W?Z_9/:QJ2D8998L&: 7T0W M$91^ / ,+:_J#WM6$(E8%00_4 -;G!4?1*_< MJS2A[5&XN"0+;R)0]+"C8LU]S%2-7=Y?'<6OV@^.FR=H9+3WLDKIQEK0A;)7 M".:.6J0;K-X1/$J1$"!P-7DCZ9$+IO2MR>S?/1SB,14)E&@M$\I02K\N MUVRP!O"VB4A\^R5\.HA@'4BD2JLDOVA+.=P/!Y;&KF:+L;:C99C0M+BI0UD% M]$'?#5R;B<%JX8A!P_TOO5_7WL6,:_H91[!J D;V3=;E!)BXI=ZMF?FN>8T&O=,9ULVGRM M--(Y.^VCVS-;[8M*R_)71@.TSS^ '-R%,W#(FZ=P'23.E\)YCCA?O_I"7[*W M5-K9%6]ZH=4[O:TR*C6T4^:+%6+DROWX./U,J::)JC[:RTI0CZ]*.T<\:%CJ MT&];MPU2%H7C$-@0#I<68M@Z3A%&5N AQH,9Y;'POJRZDO+)T$MFUC/3>_T_ M?7DV97=H-WPY4V#U*OS-0-%X^\FOP^^'PGT;'YC*Q?7F/>U;?=D[3%^6HG:7 M'_TMX+ZD<2)+R%TO(4].SRA0__)RCL100BQR4C^[MN<=!W6 8BM+^!S7N+^H M]A$>>)BG">N@+32PJ8+#U8V;.#[O0'%F]S>4,I5F!VTZDDXWT3.MP#'K%R0,*&9//O7HY!CJ3%_I&5B$'G7O1=89 M'7%[2@NZPM!R\;7[*&*Y(FD=:##16ZLT1NFTV0*_;1.GJ.K,?"$^W$0[6MP; MRSH80EUIFDE:F^*-3!_I)E\:S*_?[+REV\R&!'G2[S)$V9"WJLTK82G'5JN M3.O19VWT/%'93=WP@@W;4 >@^NF&*3C-C4V.EK9/@3Z>H'Y2YMACA5*.YO)O M7VB8+Q>9P\GV':"X$D XX$SVG;.?8(T\J>[!DWD4 "'R.B\HD\@X7MXDK)U. MZN'VCD BR(>YCQ,V5O?"^G"FI9R'@/'4F%:S^##!H_LSJU?\)'A]X36^[75E1+K_5H2%;SM%S MG/E?K^#-O"."S>:N&O3Y;=(X^HS.7D0"(+3-S^$6 :;HMJK6%0[N/N@T:N+K M%VCUH7!]+3*^V3N0=0!/,5ETH[2U((Z;\6]JK5J,^[,AJ#;H6OHBZPQ'Z&&! MJ:8,@?-0IAQLL.<0%;I<.70IA(E.URT@+ V8?21B0$7HDEG>I98"!^LKO=", M8/I?P7\9+=DD#V/ ]NFZ=X(%O<8!Y1L4:T'2IFI+L]^NQ8N)*F3RPBY.@<, M?N8VHW:R#1H.G3=AU8,SV=88(L:(LJB%>6QB!HOW:0N'385#3[N4:V"14RZ& M0,A2N;OFV>T5_QL<_A\%780?O;=3#6!!D7)7 ";+M1V4P E2;B1+98-MYJT\ M:%L2(F9S+@CW##&BVEIMVD@H*?='BKN^A9-R;RHRZ9?V0^.]MDU*TYV'TNB: M@WE(&W6)DF0[(S#G' Y:8\1YKB!F^KI?GP[EB.,OH,-*T2K DGGT#@==BN3O M,6:^9JEY<_]9.,:0!D/2?T+UJEUD_#B8R(5/#9@> HJ710W/RF<2P3_5*,/ MAS T12]BZ5F2>\)V!)N!G;@BC\I'_^Y%!)N@99G?-4[>+4L2).M0!;7LZ&6F MUP9)DJ*%):D&S#4K5W^Z#]"@6W.VU ,[ZH%HKGT\N)ZK%S#]JR1AB1#'FX>$ M-Q\YG+]E(J]%>V74;)W#\K/.E\K"?8#FI(2@SQ#;:HK8+[> MXB?LQ"IG8BC?FLNF=+AFD<&3QRF"$0R]$XG30.0V[$W)R@6_] <#ESOHWR3= M8T;'?G0/_Q%^I/YCT3+WSVB-D7Q-E57C]>_&ID'^XI]V_%4O1<\'[!N]Z^E1>(\1;+9:-(5YTM5<06@2; M*CI=3LN)'!(*R)&^A?IE#)7S2JK+MN.(;;;S8"B.],YWM_?GNJ5G^ MJY H'YN%P;SK93E].1KY8]H6N9ZP>W\*?D"/ 0UFP%1FG90\\X,/$7%D_Q\/ M\@FNL76Z9MU1:P9R,__@%NI M?(AM+ZE1I>]!W:5>=O" O:F[/J"S>#XKY&(DZQR_/XA_S_B+>/6Z8>ZU@A+I M+I8;O!#*@S)VF\U+-/J,-:](DJ5$9O3@%7?6M<,!&R0'; XSO]2<5^BI9<9_ M85:OTB_$P8)\LL-Q4V6X[XHA7H =.&V%UUT7,@W.%_3J)Y^3 ;V:$!1=Z*BP MI;]M"?/CAMHG--UHH&\0=TS\!TQW'<$#- @!#J^JW5P\I[#[Y\-]DTVVK[X' MZM.CC;;[V!"K0<3FLW(!F*J^EA^98]L:Y[)9]$\S):9/3#PEZG2ET9(YWKFL M([Q,[%(Y[UX&#S4X#3YQ+;DE[SV23IQM>3Y:SA LF ;"SSJR!%AM0XO0LQ+5 M@PK(MNG?38(S28LH,8[RV($YMI#2@;J+X"O="#"]3V[N WSJ+[-\_,ZXC,Z6V>T('6=Q7G/3H MW1E8EMYGW"#F@!10,WLJFL.27HP816SH(Z@P<<]:(UHXM::'MT5QE-ZR_8GC M1M0\7RT.M&6-A=FT_3IDLB^QWF!WQYBE/"+=ZRU0/\&#+AV>%Q7A0*\0TNIE$>[NEHM1"2]S MCK;UWDBG7\=0H&H1E:M9",;0C% 8!([B[SU:%+%WV.J-'+X M5346L0[LSAZ-]**@]P3L+\_C.F%>4ON8A&;'EZAT6+BD4SI M]#7-1@)%'S>FTUZ;&%C#2W3D9925EO:[V$%-BUZ7+UJ1,0Q^+EHYGMS7TP:4 MRDGOO_ XY &NQEBTT4#.=/+! P[9UOBYP(;4#.69,CSMV!!9T2"8P(OQ MUP3=GGP9.Y,QH3K.Y1 A__H% H8G2[8"(VM$0?+!+#,'G&"-O$2>8W9W_ZA% MU/W9"9-;U7K']H953)]Q[;[D%OEI:X5Q'4[C<*(T638D48(3>WXJ4T_#B2:2 M@M$&4E$R#^[K]B7#);;+O3MZQ;<1.=O(_>#3;DFX LZ2)_/'/4X\'9 MX[&&49D&Q7$NULOX(OAOA6K*]5:$B)IF!@@G9L4(;(8B%>IZ;.SEEU0:IY]+ MVG]02ML34R]WZ>Y^'0@+- UU1.S4<,!K#LJ7YHD1#R5LOGR102L_YIUX__#Q MT(9X?[K!WJ,<@%*._Z/&'S?GL]]@XU#C\Z1 UR,*=W\N]-?8%@\B:ZO$J&S( ML6*T ,E:.B?Y]_J"4;)WB[&1H4Z[H&'LS+M2-T==&F@T\3TM7':)-^@_G4[X M7SC^9[X(MU%-FQ4AX G>$I#0)J01):HTZU3UR6018_FCL::@E0,.",/V]1^# M*^GZH/5CK+>CH,L7:/N@79DG!5;%I&]L3J(H\C'_V M%SU9%_]2@Z/B<@;(B99#077^(4-5-HFVV270'H/.#2G*I(\%\3,^+WVK!!W1 MBT@0E>-XO#86P7SN)Q%XC1:A#'X+E/;YZJB*4&26521=@9-*YT0EF76PJ50- M9;DZ"68QZABQ&LX2N=YR3>@D4UL.-?8:CE,>TSO;-CBBV,+2>4^ZU*FPCPTI MMW4PY("YA]F;T*+!+K!M&MJH&&*#:>8-3Q'^5>;'AI"CW"?Q2'RG6SCC#A4: M'=-,@PI>): MBD3U'$2YOO>+(4&!KO%.V$J@^8.?ML&FS0]^;UCB(I/@Y]7L]UUU_]:MC'"Z M$&^ZV3BWZ!6)F\HF?+?W#XRRH,7TNIK!0K3#7S';?@D[C*.OMOC .>>KH84% M(>5:Q#S>5E]&X+)Z"N;X16A.BMTCV)1$'7LU84.R(^(WP.3$C=1M M_($G**W(#KL4@]#&5M[; V\J,U+*5VJ74]HGEBJ'%>R+DQ7(]MZ984UM-S?W M[/%Z5N.W8<;Q@?R\\H71@9<9G!#HYA,B.G>&=Z@N$SQ/A=&RP*N9(L*T9Z!I MAK>9.,8N4?0$^#1VO/.Z3]RXW&H'AC:2&VU]P=LOH.#*M=@"J='V8UCYC=K? M:2M]X_D]%BF*HA3%J*O)OIA3?U2LEXODR[S".<)N MV%041V5#R%QJOOAPQD4;2H]FQ2,ZX]9RXMGK2Z7[Y@ZS.EMA>7YM].L<7'0 M9\N&O,G;7TI]ZF)$TB@\<0IK\6YLF$MD:$CB)W2I0_SUMFF$:C,,E,V.\KDV MUW*XH#>O1A!IAPV$/\5VIP/^!(IQCQ#01@C3D+/93@=)>OO4/,[:1Z(%9FS5 M'%+DK]A<&)P6'?BB#-!]2B4W%X<9VXFO/WR;_3KW<%MY =D5T2J=P?A<.977 MU_OR3T^_P=^W]90<4).>4CPX7R61^.RB2[;CB8MC-X^R(4^OU!N"W(5?%T=% M@P2Q>8LF"8Y,>FY\)/J9%OJ1*H/?F092?=B0\'P1XTV_%3(N].G<0R(88M1D4>3^$5\_/=8@\=00HVL@WA;9TYVFNT&58 M+YGJ!U8E$CJJ^828L74!Z$DY:IY"FC?UOLB&XYXIKZ70]S%?&26X. M@1;@,-IY*<2PM5 O2\'-/)OYJLF=\Y\7,2U.!(I%3U"@%T,,6HR)7L95,]/E M@_+1%15Q IT+!(HE[_%/;43""&_!1*(A=51"(U#7#YM*1!3F!6L, M4FBL3>C:1L'$H9W%=7Q5ZHHT"#-Z/=(O;LHD 9RGY49PB-*Z7522(DD+L;TO M@ VIR&-#WM;E$06@6W[O'Z#?.[2Q(;?=-:YR1J<$5C(Q.4WD8-R4_=^YKFNQ MME\>6E^FH/UJC[@[=/$>KH47E-Z,KIMKP81O6MLS=UWFW_]B_K<% MQXJVIX\;WCP9?G+PN(>QY:Z[Z4PK4CNVM9N#FEQ[LZ$_8$.\1W* /2%X)BZB M^0%#N'"+8R:[.93.6G7:%(]6L^9 JPYU/>N!LW>Q$R]OP,[>08(2BN2XZC"RVO9U&)+/3;DT !,7'&C(\21=NXE*ZPV^*_/1E::#;$M&=4D<'73SM*V0CM]T#ZGSNI>6)833^G M7#)'?#S6^4>/FD9>6,<3@WWAN3+=HX-YJL>KYD]6EY64YN5MB\X= C^^J7?; M)S0\7GU8CV>?I!21,C (EU70NZKCGK$BT5\7=C[7>37IA4QCSUZ;W]RZLBJ[ MKDS9EP_5%K,.OJ*K>JO29@;4/ 6;\S1->HT:Y;.^7?BSUBIJZ^[:%.)H^TB% M^",6LT6[?(T;VBW2O" MX$&_H;XRWB1I32.D&2IT\4,SI9@8J?7L4D1B:62JCG1+VX233K>N8>R(V>4Q MUWG)67,N!A^&IM5+XX3!/Z/+N=$XY-"$EQ_*7^3E*-?2*?H9;V3TB_ M%E9RJ!S IJPD;8S*KM^!\5 F!<&'UYQ[8N699$M&KF KPS::I6)CEC_9Y^CW M,Q,\W>I/,9HB!*FP(8T7*8E-U]P05<\\9+U#.8[LGNF=T)C/T9>YOU[XF@[A M-I<=R;P5=6"U/SQ\50<-[\8WD]SNS^:I2DZ4L2$7.&C6Z%\5X/VOCMVR'<+R MVGN6>^-3//S'PS\SSK7>\WW_/'92UNUBGWG+/W_OW..7MOJ."T<7@V M1MS#F"-:J[I6]3FUHT%!-.5"Q7;UGP]8GY\>,-L=]VC^W$/HA@?B@87+UOYE M!*>'H_IM',/WFN3]M8[)S+\6S7?S%5LW91RTWEE<2$T)[NU"[D6MH13FRWX7 M6UX.%V+U([.G]?G+%D];05J/)O#X,$;+&O9>;;"HX\:*/ F?\'BLT<_9&7$K MWW:-39OIE1_,L.YJ;#JWKQ/".Y"1^6GN#3]A,W6A5'36V%:H;U$P8Q=)ME>1 M\6=\<2P-5*EU['B+(U=,OBN0[!)W=C>(2P4&?UBT-U/+:_R+18:&%R#//Z&L MW7E4PX5XG\Q@3ZR=>Y^+N;&X$7#$\.H@ 3#K56S4)0?N.L5 II_6UZ3J:#F# MI&?*DA7R\O6#AR'4V_75-"A+2I5QC8:G?L7,)+>$5P2Z;T-:U\W:W1K+F Z[ M&1*W(V!G H%Q(UV<8OF(4;!%T;/8#^N>E3IAN^5?**$)KU7 =^@K)W]C8X@U MB&4F7&&JB%N_/%@@8M@YF%X<_JON8.[U@/9 MFH)M3[6//_5H/Y'W<6'-\>+4Y$##**-I$WH/WK4BH7O\3&7>N8*:NNR, S.? M-CW.#=FO3BUX:4:9-=,=^3F"XTQY($HTB.8\%*%TD0MQ:GH[2%8KQNSU*HAC M&G,^M^YJ_X+>CK29'"\J(R^%:;(99V^PEMZ^?/]QM[)# D=,_FGT7IE-U8[N M&V:2WOCI_?5^')T'F'S=A2;+!X7'&%Y0AX:Z-$XDX6@U[L?S\ZE:.$=K:S=] M<4GGA[.1YB KTT[^6V5M!DH9F^QW7$@0=A++8+"?<"%^1'ZD;1L=90[TT[<% MR[F,^;U[US2V>T_CO0O6R477IQ*-)-Z:+%M%;II=BC)C20E) M5+\9MH:7,TS) 834S0B.L"H7 MHBT%2@"H8R=OCH"6,O;P+(:T9'[D^!Q# ;"]?@+C/<49+I#)[1K(S+IV2CY6 M$A2US4KQBS_.\%>P;FWYSUZ# 9I^\6A9SE=,PWA&BRH%NAT8[\Z+2$)K+Z"A MM/Z F387]U2SR5]4 ]&NC' _/M*Q@T]W*Q[^F+#ORI%!J@LSB&45QR !X>"J M&F(_#KV5;Z@$='9&%.C3L:F_,RRFN\D(48_]R8Y*;[+W'QD=:%M5F9[V1 8H M755P:C'CB+6\K7;1;R[$WGYMI7DZQA+'?HR_ MQH4D@]B_$9:)(>5!ZWZ6E@0J'Z 1$_18/B2$[$+>C6JX-!!"@=?VK1)"PQ,7 MI^9-#+R#L\O<9%0[]_R!4E:ZX7PH$> L!9&!D/R=,,PR)ROM6'$=#WT2]L/= MX_CP2>#7<=6=AQ]TH\-8U[TY;8#]C*D=*(6\^Y*C8#-B>B[= MTCR2*L??+.YT$;0NVSDU='TNA"51P8B/ZTC3;D+PV*N]W!G&N%H@]XYED9!K M.?EY*FA05LW_ZSP-->#KRV,"J0<35E>XFW#+_:_#=VA5E274;Y)2"RZ M=K=%3)5YD"(EP85X72QF@HJPW>D6%*28O!R!)4S-T\.(%)8?TS%HZO0#VFU] MGZNR3IU1BF'VY=-JUVI,W[^6U,NV2J_Z]$'9Y88/A6K88@PR]!T?U=?U)89F MV(EAA"!-UEY@#[/@\=*#)<0S4(G>2YDY8DS!L20^+U%.GC9II.6FPVH=^\SY M!@6SB;OG3\%]&D=X[CWD^9,$HT;0*QA6['><7>A>1'UNYBWL+G^HXJU*:S04 M^:N_L[\8[H-;6%!LE/<9T=;M^C(@\FIL5;1*R5U#\H>=Y7O<)P1@V+$806S ML:0(-K0OWN5XJK7WS5@0N1[TJPZJ[36WLM6G(DK/_3=2\14!013]"X9)A_GL MR0Z-PB_=8Q;[$Y5/KAU5>O9_[N[S/R_+3WD*I;FL %K#KR)A_E7B1RU4"[=N MSM@1:2Z#@%;9+FB=/?\X1T(?E/4LW9_5Z3>&4IF!;F@QZ8>>4FO5?W[!VS&V^!DW%"4QA_9&'7@.L*>.8S>&[^O22AD' "GF%=2MS*XFE^4R7)#L[0;\%9 ;O3 9E,SGNP_# M,C"F5BESWM< U8.J&L7$0+,/U*+J+5W MH(661NQ6_!4B3RA" CV,%B-"__3=8ON:?Y#^(]UHT,;T-OW!,?K?E\*5Y:9- M,+) 7)=ZE/^TXB.S:-'Q;-V?6YX(@A;N$Y;&0/(;*(4IFN8I/OJBBM@)3M") ME6T+M3M&6<%E7GL6WP#A.[$]#D_X%RY:G_H<;U(<5WGV\_ISO/Q3XJ;VHE,? M('3O;?K'E9H,VTWG1LXIQQDH<%"7G/ D'(AF'@Z:RF6M!?NYQ_;35=2PJP.1 MV)2M8S-$O5]RA"UMB01+-)D@_OH0$1IQ9_[(";TL W2Y;7VTZ$M0A/>"ID-) M^UR=\F$_)2NYG/W:K.T-MG->B7'_<%[T\%9R1R"4W^)8N<3H"NN8T0/0;%_< M[VEJ'+(GY_&UAH>H11?PU8?+CAR_,ANT).GWTZ5S7(@HC'.Z'+&I3=-,Q9!* M\+2SXHJ)=I;J)6DA[,M#ZU&[]J]'V#Q$BUX,I>!3$0VA73ZAP&E8 %1JVE:3 M6/^.?GXR.5KU[!OT-KS[+?A$&N,,C17K(3X9LEM@WA"G\0[Z<.B-Z6@ GH>S M;8$'4XOQ,12Q^K#AA3+S:^;\T<:.O2U-I8M5;.A<]@<3]D214)>0.?)&HW$=.JG; M4Z!ES>D<:CGV2C%\:-T%-3>/0S3=L;J#21K1B*/57SMO(^U&L-ZIA(\7PO]S M4:Q_T '<]0#>#3O4:9U%W)NSU.Q"2^?56[QTW$"6;X78C4U%J-+A]F#?;J&B MQB\B]\SFMZ*SA%.;N"=<)7+\12-&A#=O;H_L!I M7;MAY27]CQQ7W#CTWW1K"E0^AAWC6(:#D+!1)\ITPUIYAV9&C= ?EE$D0M9 M6E?W8GVW-\?F;+G\QVJQ(MX*#;-,:25/X4Z8\J)\=*MK=C-6?"M92JMNCPO3 MH8NS[!2*T;V&>91>)XM2R*7 M?.X@9QKHI2A@5Z*S/PL8@XI,<#_"[3_P-#\+[ZP2*_E%:QEL?DB<4[W3:HA, MNF!1H?"QV49Z9O.8\9RC*D=0AJF[\)9YNY0R/G"4<@:S,J+M90."=+Y^ M=KK)2WE$@M'TP?F-/"J9+7NF=!7G_>][8;X_; 'M&+%4E($]E6(-6URS3;8( M2P'6=(@ZV9F<[*^;CT";6PZ8@SHKJ@6 >]/RCR5UY.2UY(TS/DV%.32%IRTK MF"G6[D<8'84135=C6:X JEP:&4,SG_J$8;BS?_S[+;>T;'1RE >+'4>QFH7^+[EJ%$L;,(S,K3&JIX7 ME1T_DW;=4=OT\".HL:.F;VY3W7O"?^0G@7,E_5_M3/OW@G\O^/>"?R_X-RA8 M_B?XQ\;8RZ@T0?W'U.I)YBNG%$BCZ4%RI . MBUF/5B79IL_29=[?>Q\6I?X9K_;56J&C1^OVE$ZYW8N[C[,_=HE(6XXS?3E] M"#%8*&[2L!M6@^VEPCX,6UPN+#++7LA5OIKG0S%R$!UHN9?VCOQ,TDHOYL G M(W+J>)734:@"0&3L8!=S(4$5H0E045BH87*!\&B+%*VP*T=9942JX_KW?'SR MX??QUW+"B+W7*Y2Q(4KIJU.%7I$UP0Z=U3JO[OGS4C6M'K0_^#V?)%+!WNO M-00UPS1$=]WA0NYB A')T,9&JBAN01[?#4^6MRZ("PTF S\X [3&)*J=_WJ_ MO<8VCS@U(KZ / 8SUX&56C>41^(N M)'4T^6:1NZM3>SMRG3;M2SSCK=8\O.U>PQ]/>#\IZB.LW#K#WWX?TZZ/#WC, MA5RQ 5&2LH=Y16"(K\,OIIZ:35M!,32F!U6-Q#]^/S M&.($<8Y@+\EPBI]4VAG*AU(>";;@IX3>;=T[%$Z,D_]V80>%:/5N^)%WXI#K MB0I''SWA'PX[P]5O-T2HC ^![?9/09>=Z+8S""J6A"-$,?KQM%Q6_%VKL5T4+B3Q^O6/ A&6^[_VA2#;F"Z*47D7_O%W MZZ,?.9^[L'# X58FQP'W34AWN#C_ROSPCPOHQM U3L/$AM&TVN>:3S4'M<[_ M=$I-]U%7]B]ZW6!OKMY2J/&G 74$Q&1![/L8_\Q)9TR*,RH2")Q6@N\456 J M(=QK6XPWMVU\_CGE0H@SP2!%?LT<--T0E79YIGWR9O,=-A?RA'3L7$NQ<\C- MA\6:FD&-VH>.9#NXO+17J[,#1R6[X[_MG?8_[Q'7VMHY_/&5!4+J2W(@MAYK MQB405T^QS,'_=>%LR4<=G/^WW%W?_YO[\?\_>'Z@35"7:@!-LAW*+9K&A71/ MJ]GCAD9537@1+6ICQFF:#Y8^EZU]=Z^]<'*8=M%#^1-% =]^L*DR[H:6JN^>2G W1,7;IW+FHLN._ MM'<=X$+,O9\*09B!J< <1_DLTPTSI,G1!A>Z*Z@I[\#(L[#Z7+8*AH+E;,_D MV#X7KWZ%NX?Y5V\+_[(@A"G_]PK_%A7F=F!HY_%39KWRU_+P"1A2+E:B7L&_ MJJ@Q.TK4R<>L[6_LR+Q3[_T/@:O+PQ6TPH4- 76S M;L'+!>K9VE?>BU2]-A* ^?W8&98'81K\?V'Y_@^N\'4S M A4A6B*/UX/G>0 M!H#ZU;Y\TKWW1GBIQJL2Y,NPA-OPVMES,W'3,993_P. P?_<:A>3MDZ-RHAU MC7%UPC@I();F0Y:A<+L0^[_W0\^:A]?Y-TKO6X>=Y#FYF!'L3 MG0$I;X6'6:M/(Z1YCOSS_.W_P:,,& M]AR8NO!L^^M@57/;4*&7.9KJ;R _"DI*_T9TM3KZLG>YNWWIXFTG3X^/S3ZQ MR,["S..EL=IT:VD)O9TVKY)?..V\I*4$44J '/[/D.06PS;8ZGTXR*XF4HHQ M\SW@9Z@.K??5"YKZU\W+_G+M<+CUYE76R"WGB0^\0S&:_QE>B/N+KWA_\67K MF^I1?;7AW^9:5?JS7C7M%I>_]KXXVR[-D_DOKQ0T!E3_Q9<<_JM\._[% M-33D\B;VD)]$=>RA8JU[ ,EX^Y7G3Z\F'%P_HG-2BY="G)!CS+(KT)9;'FY< M2"!\4HJ10)QU8#9Y AX^VKGI[\CLYC/VD?3 ?:;)Y]0O@I6DN67>"! MZT7A"=!N&,TI5!EU+(T$9TFM<';"!/-%Y?4=NO%2EFH+XV8-7TR&3N;\"4]X MS2?X:[^P@TGV/KO"[)V\=7C-6$P[.-&S, SM#.[/VM9NUJNE<2(:1M^*A"D# M:)X'LNAR73EYE@DO73]$EB_F#EU+G>)S_K0<'3-_2!.RS4Z:AV[&DASG" DR MK[!LV64/]A[7C4LX'%U0ZT<9W%945@3DV[S3D9SU?OA (4[- MZT#BVNY3-^HG]D_SYMB+JQ0+K/[L/:E/:@5IC,-<2%HCO7G& MC!IP@TGP\NL.(F7R?XJ$3DPK1U*+?2PS7\,K#]B*[HK_09*';'ISA'29SICV M8)@W+-8=SY)V@>>3QEFZ*T+?"!>7N!!>@[J@,E-7DX 0U;2-IIJ!&H=9R;+[ M5FDB5P]T7M\9B7_1JDQ'5\\8)HPI6]#&$T7,_E0EB++O951YFI;=<[LLJ2;5 M9*MJ=>S2Z^.'/!5UO67H<)9<&&F#)6W6@Z_UF>M&3)I1<#&_+,QH%%>4%\4P M?EJ39NS)A71XR3[NOQ,\UQR4X^9](<:NH8+OHK=*G"'$903Z9I"Z7YSZB*G$ M,F67J]#(7PF]!:+58P8FA7MO^)E\UJ)\V<4IXB&A\B*=1)CTL M)NTB@7F+Y4GO[1"?;'9I >Q?]0;-8"6G)P"/-JG^D <"II7.B^8*#@^D8FO4 MFP<93V3N(G2FCQ.U3%?]6!(.''@0XP\X[UFP/R>#YHDI&/H=T$J^0/, GMCW M0Y;BP,6YWCNKX4X5BRHS=E\?-2MZ9-PY+KZW\&[,_%'^9YRAJ5*6K-0,+*-^ M4(335J %>)"@0L"A1*Q<*D=[?L-EG+-_9$@]8&I7Y8AUP-7L_3$?G9[-ICHG M5Y?G@E2&[^56Q!;D#*.6_R/OA( MY#A,"!L_2KORX=$TL%]6Y/Q8*Y;]W/(0 &=$ #Z1=(7N XT1JWHI 2_]#WM> M<:"&.3U<;ABFJO:M:>:=4KD'F9THUS5B[:>G,?8!*4S#K3L F"#1LUT]4S.4 MP>Y!(>1P+U[JQ]=O'_CN/&(_K7&\?&U"A.;A7D[8RX'I8R%]YR#^ )2QSF[F M'$:W750%.UV/THKKE%46'Z::(B209J364O)&5&50QY];0Z]Q$:]>$T@C(7L: M"_RMG!Y?^2YDY)@3R.0G-5+EBM C^)KQ1$P ?K)$6,E]N*=@=\,HRS2TBOC^ MJ>L3F9:*%)54WY09]:R.POOS+M]0M> @L5IIG[%3C02RPZP$L U1:.WHFD)FGP9XIH43BNI94/C'R?C0L'8@0]ANOETO" M>2OL13!.?N%'@/5YL=_"_/&$1E)O=RBXQ)I@B28K.P'=F<_O26]O<2$"[49N M'H0 FAND?-C87GM-_4EZ1BPAZ>/S[?)RQ'I<=^B4.$<(-@-:#UX2L2O#N.T M7LA"HG"I0&-,\ZLW?O1W?X9#E+52]NGI4Q<:Z*_1MRH57P]Y]J3-)NAQK,&. MSF ^*&P%,%]>1T5R(0VF[9CV,WA?C"1G"DMS(H"O2(\1.S6 **832Y2F=QB; MCM8LYD(>E0@+MQL'%"BWQGV\[S5PLU_M>=.FDT?B&A]A)@-BV<2.@P4A4HCR M'#W4#?;C5N/VXD5E-4!A)NB(?.@N)+J;>BVQE$!"HZ4'$+@0+PMC+J3,(!=Q!WF68QULQFFG<2'SVV)@^S'!L*EF MCC (7OC8@#>,RJ:'V0.B%&)BD]+L^]Y,RYU(YR%VN*C4J;RKF?L6G;,83[RG M*]2:#^Q0[]+?98ZQ0^VFQ[5Q3 '#(E9T[4@&-K$>(]Q.$<"9\LQ&RAH1]/NR MCSVHE6CP&-[1NI4A-1=YG,D@TC98YE)D*N'NC&]U,]!>15"VV$^V>N=6Y/7M M;B3ZBX('LD_S\MNG&6_"AM'$.S;YALN_R9D3C6VWTR[AY5#6I<"VL8]]#V6G M!%/F1CN\'PD6NA%?%D!N)_MEW1=S:2?NA)$*N1 %_-45WB7B]M"6_2^1S91S M+ARM9GI2YCKB\&#[E/KW?L^%O"L!C$KA[T3U9]UUL);P,\%^V7Z^VHI/DUA2 M4,9'=I.%&Q.!"@9['N;P7JF&69.-DAGI)KO MJA\/DA>R_.@ZJEH-&X#,/4571=K,V0%AY0MYEB7ZJ/ M\Y>WX@5DS_U)94UM7:E''6,WPJYB -VY+MR$&8,RVJ)+WS8W(Y[H V21$6D< M1=H&(WSTCWO+!96.Q9V?5%,%SEZ]$8I14R'_6/MP1GPKM=77K00G];W+"K3> M-NQ.O!]1 %".5NC"2]49"B\U-2:'A/BU-C@L?'>HAUY1]?\)_(PS@ M4Z.;X/+@WX?YD,TZL*7J:0C.(P=$."H8J"?#8[ [6"[TSMZS=7<,XUB'HEXO MIC]MS KF_42VO:T3S_/MOOD7_AB@D_&"75C5NH?E/\+9!ER REF3H^$G:.*= M6$&O:XVU+?13]_,'')R:FEVGSM;R";8+'P(%]! L M*?Z91A"ARV+:CQFB=[). ?OI#KT7T)*C]=#$)IF?SZ+)2C;T_#X?M^_I-(A2 M#6&R2Z^H9]:,/<@49*G3$>WX2>^.:2B0M:TT/1Q996$]T]$R=W'40&TD?*?@ MC_+OGI]2"I*3#T)X9O!U*YW"AH#6(-6%)!YWX(O^(-ALS#2L@9[;I7])I+L< M^?*S)N?3EQ#ZS3UU6+WB&82SC*^T8EW88&9\1@:'#%961NXYHQT!@N:QG0A,XAX;KJB^SWQ=OK@1'^(2'*!4Z$"(+ M_40E!/5$%/K37Q#7,I-?_Q;& .:(H\WT,Z$J,XP3N1R)G/NHTI"*@UEG_L0Q M8FT]H70-XS0@_N];+.@"__*HG@<[2\.0I,),X MJOR!"]EN_H_WZ,49:>Q\% ^ML\.27WD'\)X^?(*&2 ZOM/GY<^Z":Y5O1K'K M)4'% YL9OHA]+;TOA(I^1$%9TAA0CDM94GB&)1U!=:"$BMM7P@N+WY?<)0.E M$@=HW2Q_!*4/XT31YH; MSN\\@SCYQJ"P&,Y(4*9+ZV:G87W#YUP1FQ'G08Z*8.B M2"/U4.6 P_%WIM\T,C9\'75$+3U2E+7E![-NZK.RC-+[""?0S:B]-"NB2*L4 M$D%^W\V%3!5MQ3ZX5C?>-+?1(R"IPEK[_(ECPO/UGVR$THQ7<1'N,M_-SZK> M?&$GG93H;;Y"W<<.?A"Z,7_'I0?VQI#:S[S B@;%/I,S@JW1I"J0,=L79*'; MO6G/:=]Q<3_>OA7+*ZX<(&<'Y<=DF#]N_7PP5=WY];8"5W8QXAF>!B*!33B1 M):W+:>'(818/K_.L8!I@J2 QF+8 XN3:L( FD;4'+75 WL0]-PVM@;(?K@H- M?AY0]$A_?4G854#JVQ79G "U2UFV:GOX ]!PC:WL(Z"-/ :[AD@&U1"L.Q/0 M&&1)(]H*Y.J!>EHIO';L&LN-=.Z1"5;*?US]N.?KF]G>UZ^FE7R9]M:^=R"E M,;H6A Q0P)",B U'I$ E4/8!A?/NZNFY>55ET1I]E<^M]3[W3HC%95^'J-U% M@-8+7YN;\JO5G'4>;/H>RY?VK">%PH6D#RTPT$JTL1>R_3@QY%EX6O^;AK=G M/T5$\+V?[8JT].A7U'QLOT$8T$%QI^EHRX$]O6NN>Q\$J M3XJ_5N[Q,(_2ZZN<-=G8&%NMT%!Z:_E31HENIG?W7PGU5=3SO6I6"<:*5Q^*V!! M!$&M-PYHQBBT&J/'+'8&>:Y@ZL+9^3]=?X:O7O^:?/HT M#TX<_+9?*&7P;R(PSKC6 E0P-5CG:4J]B1Q%!_&T%FM:?A=G1Q 6<'@YO#O4 ML64C^&:_7N 70=G12VF?KI[Q(0E!F!Z=TX9C%CZTIL[> GE:>R(766)H5]H<=0%9=FOUUB*#^K?-MJ!N,]D#O7IQXYO%_9_WJ8?A5\V9IXZP?1! M]V)$,8')+0=OW:;/Q5T+3\O0ZO-T&S YZ9/B2FK2RX^MYKT9<]TX=5.8(P B M-\UZ9C1FL@_+5C?A^8VE#M/#>J$",%_JQ36R1J$2[A[*(=VC-6 M[_!J.=C@U&FAOIP5V-35"]M1%9'"J.?CJ7\-TUB'_U=HC>TK]!>H(DN3:S9NR5G5?390,]JLSWKWZ>-LC@)'U(_+!@(:$+>3F\GF9)T=2]6WT_:I+[U9>W/_G8 M77WUXPIJ5]H.G25/V[M<2"B<@)\I7=Y.@0&Z+AW)%OLOD]B6P^?I.O=B?I?"M4F?5^OI".JD[K@DQB.0!K3 M-;! X\ X5!9M@#S;4W $P&K<^VFG.H);GLT.$O9M\XN=&KTP*4[?O ;L.%[X M>LO="8'T@W,A<6$H\3+=;O:S4*817'UAQE^W^)3?($O$'ML3<%[?CCWJWPS7.Z]QKJ0Y6S_W&\[ )8R""@[;>,!X5,G^;"DLKD"(4'D<1W!1!WW3IBPX60 M$=W0)/>K#*&0U_K3E,6/OZ9M]EPQ67P>;-05<3"KI:J0(YI90Q?;\K(^""A M4UNZ'DXNU1[5U+S>$!WEA(0?2;]6A*FYT(Q)Q I7PH*)@)9!&MB6X$AP',L2 M@)'?PSNQ?"&*?LPHIQ&A$ARN"S,W_"'5W-SWQ^GM74N/"_BO"Z)\F%=1GNSG MH*)45OD'7\B/:-VA%F-HI^&.J2"B;$MT=*'HR2B'"HH8MLB-T%SDH-OEV/7@ MHYK3+H&R=VE5&\N\S%!DQ.DH^YU4.[;> MWX<>+@FD'5-M/JH9M])V$6Y@??!F5?WJ!DLB;_#,,+A.:T FM!0JNT.^$\GL MN-FA"85-*(LZ43_. :B2-!J!>IJ=+G<6',:X%_AK'FS%_4/+H.6Q(;@B.7.$ MB[VGD+RWO\_JM46T6:[S_ G_I]3NB-U;&:'QP8-3_1S!.28O4,$H8S^VV$M* M6[ XS-B_F#NMW_0NV\&Z^7WB!V5ANRQG7TE/F\GL<*>XA^BDY8\L%MA>,6QV M.U8!LU2:B/FM/C3/2\U40MEAR1OMP7!*7:L\?NR7"4[,_E5)6I&5_)+3D[T& M#5^T21]4R3LE=\SMWA.&> IKP%*]P#EA;BT[UGXL@P.\*V+MH(=V>HFM3L_T M8@4LM /038DI)8Y&MH_#M>V8IZI7SF=[Y?-*4F33E?"E%Z6YD"P/1R[D#0KV M!X++ 4>K>'IG*[N1=80+$>L"HFZ3D).O0SC[@AIZ,T603@87 N0B]EQ$U.T8 MFS82G C15+VF&!,M1QI,5^:GX]JC-6>H!4776*85P$7QG=:1K\1U^ZIS)D.L MLD6>/A\:S@V MKLZA.>?=L$G7,-5=KKG5P3S-'X-DV.LI)RF)=X- M62HN-OEFEJ4A#$\VC]S*;:ZKO[2OF#J3MR,+PMG^R/)EC*4^.)+>G$E$HVT: M+&@E T^#PPAK=K2"6@H^?LS]-*Z(94U3QNH7)U:7+&H-"L'YTJ=/D0PAEY2R MJ\1SU!ZK^BD2<_<+BI":D:._#H&I6,KW6[G;TSH#$P=>B-S I1 :V//$O2;,?+ ML*[31ZC*:21P;5Q<.ERHJ?_#X^C:0:?OJ2\@$6IBO[O1'1A!E LME.%*:TSB MJ!TMFU&ZJ)LI@:3A#HW7.Z28*EEMB]1I=#%6\7NI(@:!0%!;FTAD<,A!D->^ M#VV.,J3[L:0E-\CB78-Q4.F6<#^ROH<3$/3B8L#XM,1(Z.Z6Q///)@8A/ 3] M]T^/?SP5E]1"%66&E 5?S %1D/ %0!;+W8YWKM?/$Y9F8;.Y?N3&8>60G;:M#:-LQQ* M3N38A\Q=L*.&A'@CC,S/:7E+JMVT4Q-SN<]N<#D[ B/-#4Y\'N^\F]X %6ZY M'%;YF M)_+!LNNM+*RR^/\:XAZ)+-22$SKAD6$)91J$)&)[E%R,)7X(BKRI',)<9MD"D.:U,G&C# M-\"3+!38*3)"JG%4"7+H]@!Y1/MWPTXIY$UBA^2W;YN%9QMREC^8CG;T M#,-ROKSHVJ^E-7%V([,5W8FI@76";3).TC27,VD= 9I#%A(OU+.G!W;9MK[U M#0@)>79LKWM0BOK#5Z3= HI"FU*,G5S(HT1\J#A3AB//A2S,! ;H3QQ1KDR?:%8<>VJ*N[XZM/G/:Z/C3.\J/U*5YZ*'+PLR;G%$\%+.U M6U*ON9S"M $0[7>LD]I=65H69D&D30,#WI*RH##DU;R?)-73/PUK[ZFDG*N ME.8<(5(S*5A JS'3_ZIWM64TW&'A@'7P-FW?VY9MMQ0?Q/"H"4& ?(Y@$&@L M^-C5:%7."!>,E M$C]CTA2-34*9OK*N6>HLD!ZFK"[K5TFO*7UO-XR\H0S/6>T5_"D)MV8J8;H) MP'<07->]95.K:BGU--NXGQ:9RZ'B%HRA&JSMF.98OFIB^O&;UT4AJ.J_EG24 MP$)# :U>$/E?@4TX88*:0=MR:8HZV .5 Z91C9+88F, MPVBYUB5&T_F1OZ9FY[WM\FLP9ER6PPTIO8M6#C<$ 33PV- M)+\SP8B!=":#9H.C..H_;;E@)M6IO3\'%BF=5NRR)\13473BN7@5QQBT.O4P MEE1S-W$'RXGIC[*EE::CQ.F(GMNM(O3@C226P90K+>1]E-3[AV.?_!X.EM1E M.8@48%:\V=]:+_=;7USY;QY\T U92B5-&4269%6_-6VQ.>A.+JC.Q3S\A>7^ M]+PW/)2N<>A[PC7OO#_#E--H4TS[<10/[2W4W!Z$D%%8I:7%'><"_R2_'3() M5WVQ[5O0T,[("W:[Q.(AD42J?CFF_;*E,4#PI TN"U(R$UIY:+BXQP%T)(Y2 MD!D>C9E1K"SGVJKM$BG=/NQ9KI#(C J?3EY&G'%/6JMXZ:[3_<'6PY99!I%%G5H MD<2\4E_6&G9"=^&]Q9.Q-5L^]'*,-Z,6IX*K+/58GK32#(LHNJ6CTJ?[MF6( MR7ZU,=F!F,'M]>65-="9U4F:2,+1'9E_+6/!!=*QU!0ZCI'+?H+>#>H$CF ^ MF2@>>(?8HR\3GJ'0U0IS&[>EM>94VVS(F543H$9!#[/]*[._[I)],ODD_GI? MT"<8"9L[O7L++G\C\BZ>I&/\/#B?'GRX@YP26CB[>XT+X97TH[_"DR:8ACL7 M,+03F7>K@8I/]HX%S2;;;O[OC[9,=7_>W+^:G>#1"+C?2Y;J^:ZQRUKKSLFTJ]S6F2M0,]1R"+O^\ MX/)H-M&Y7.)<"U'44LX=3<#3SGC)<82D7A'X@6@:IO,.-LE2X-O!00:C\)6, M(V)K_V6P]('T[=L#?4^%4\;W6XAQ(5:<_SIGO0F:L8.8=JM6 \XT7H 51L9- M19"M00MM@%*F_R;&H=4"#IO7NCI$0?@\/4+\=#+6JKZO?/*)DPG'O:F80P : MN.4H'.<#:!50]A3QU$P?LZ[!-$OS$584_7CT 4?&E\4_\7<''C7?%_:8ZJKV M*(3B9TT>(_;=73\/D7:R_H<'Y0>.]A"[$19D"&ABE\4IN*E2QB5:4JQA$6UI MHK<<@6Q8_&FO+_N+H:"&U%>QMG]L?T/!UW[41LSI#_05*IRN@DDB;J^'I0X! M@5R(Q]NAED,:+_,,LG8&5=I MX$+&X2)=$ZO:'_IMK]J\M=P3GK[;AGL/\Z?5DG-DYG ME?0SCR"]&?HTI9<3AMU$B0 .I+ZF1GU[0^R5R-_7'\\>]Q^+F"^-47JY^\=5 MW@$38@:1=C8S U';&%,W.%D^V-&@; YDE2*0@ZYT;-XLTK].72K MNZ[N7-#[$\NUU@)B$SL^4NP?YUB'G&"(;D72P/)O>(3E M8G@W,[U5D742B HPK;_77*+'.94UR!?_>%;TITC,W5-B10?]?V!:?RN=Z.3L MI+'^5%5$^Q4ON'OE.X2%W5 Y$1H0*B_Y^=/UZI?EV?9MD-O;6L^S'Z*%OW.^ M8!H&4S&D\H)#7^:J:_&T4\K; >V2:4+=V4R1WIOCN?(M7]^**N:.&[:J[3GL MWBUXS>1S,@^6ELLH9K\ 9>\YB!;0)O/8FMSN 6'R1FRK*/!SIBVGB;H2/^[6 M/,ZR#Q*YB;!(4:,7'=C7\M6J#+KBN_>;X\ZITE?@S'MN1;^D=M/Z>^Z(=^/X M)Y"AE-(.0VB@LB!0_#S J'E2HS1@+Z)^:K=@6-#A#/J*^L,DK\_2YB@F%DKY/+#\*#,#L* M;PC;B_$%JL<-7,I9['8KTBH )8)O#U 67H049TR#?7G+.C>\=]A"8@:7FM?0 M7%3R[/;X/L^%*8N(FPY'7N,4?2D'C'?EP/6%6_0.:&_Z\RZ'[D*/P.K"Q[N@ M&?+8-H10)V6^Q;!L'LT#A)%U*W,8$07:V5*198%F+D$*)QMNTXB3KYOM!4P( M]=8!KD*;23-RU$Y0)M/ EB^Q;@,(RB"@I;[2 4W![K#41BX.=K@W%-+&C[<, MXUI47TT;1XI4F%<70'@;/*(.)CQ\_*V$"WD'*CM8?*LN8,;40WJ E4GN.4>_ MAY/I36Y!NCQ=FBKNRKOWDL?BD4?%DRSCKQ+\$(A%!.,9<-D';'8WNYS%0_.= MVOX.0- 4>AG31D#":Y[']7!IMRX0P.5)ZP\=XST=LG*X/+@A?K;HOA5/-3,0 M32@PIVE2G6B9',$EIFG#?:R4I;XP^^3&Q7&]Z<7A#K12=":@$4&UQP4TC;V/(FFU!-/PO8=O MY^C!&NOP1ZA5RU65G74!4:$FU\@O]ZK?C8N\\="<?7PN0.#$-(> D6\)H('&[@%*%Q#W$2NE^U&VO__\ M@+9DG]5G9R"T/?=\TQXII8SLOMJ!O4O)9,]^"ZT_L#=$D,TP&3O9V2V"3%76 MOCS[]4P^?_NKC;4V$BM5N_,\\DO/V%W(H]C[Z!S<<9Q_6XRE!9;Q!EQBU9QN MT-KA8_$\L&LX2=0^H)BV,O.K(KIP 20;XBV:X44(),(Y]MLW[_Z"(J51:V2S,5:U(2>JMRK@=)'4]R(VF<^N)@=:=NNONL=XUL]8SV#L M:T6?]&;@K_,.WC%V_+Q$_OF D3/\/=@:V^7]S/,H0;"?6:@(]MN6*(IATD:3 M;>_#+ZHC*/.BBT3A9X*WTE0#0KSS'*XW6G^9[=2S>!J[OVX,+)&$[B/2SL&G M/&9*$UAPIC%Z&";4HDJ"\SO(OBA!(KJG)9I&IK@0%T_IUN8S2XJ).S8K9]I= MOPDF&[UVE)MZ"+:/X<'[X0"]L909)>\>+J1N@]I.F^FN#I@6'2FDF26@=$F; MMX)VHT[H7=8/J=<^_D&OX6O8^P(\139-+ M5F4B$EBJ.W(#*HF$W2QF5XSNQ<]W'WX<PL[RW3WY1G4WBPXT6@=7AA1H M^'BD?\QZ\/;X;.0?/_)<)TP$)0R8%Z+V /ID!W-]U8Z+2G$G:0UIZL/=?&<\ MCJHT)A0+J^J091RHMQ/C M6^'B]=E/BES=*(CZW9>NY:?X&]S3+LA+" T$5^- M!S$A*14Z>^U]I#[ M'EW55MFGJC_.S)YQ6/;USHY4&_ ,I7+3H#YKTR(GP"P)'RZI2'-)7G9 M4H7E.M:";LI,4OZU^[7!;VAM4NVJ;_KK+,-LN]Q/%W:WGWB:P5R9Z*1LM,,) MG;VP1OAR13G@YX1)0RL/F1!3+;?3'[&[XUURW3U#MR<6!V!"M_)MB&*0^+YR(L.20(^D0?OF5H=6_EGEWJA.IAV;\P5PPPLS8D+FE??S960<%*U+B?7'^@S5"^)UP-IXSVZ,Y@C? MFD"_2S'88AY, '\)!QSD)V$35]:AV[< %6=[_>?JLL&RI:F?A;0J"H4+.8_/ MY_E5I1'!GJ&>L]XUJ7C#5E+'5EZ%[4;S8)P#!L@KJ42Q5E44"L"+9X2T0EFZ M;X?NX0[ZO!VU<"SS[#:H+#/9RW?]N.38+FJ6X.I,T]MD'96JE>>OGHL+LLO7 MQ0$M%FB64:H4S 2VEPL1O$+[7G2V=P8NA#HU%-JYN#UU\R9AVBW'_\G1RW4] M+IJ:Z./E+!GV0Y1'$-.&R)F"UF6FW@H.I9@.QKMT3,E@$Y?5&H=8IH71A51C M#\*39\5O\R([+!H-:Z\G2MN]%""PQU(AF\(<(393D /R(MH98CQ:&M"GA?8H MB](&L$DM445 S9P[7=5K4&]MPN)U3D6HR"6=_5 ME]N!$$89TXW]Y;U:.*9??XLGY^0TQ6](>"[<-@NZP\CY_&5O+E7*P^.$2E]U MIDI #^5X$@,4TCY,"(R',PZ3QOAE(,ASRW!Z6&!^=$//[8?11Z4"%X/9)VG0(1TMWI_$J5[&SA%+;987 M8,MT8PG2O4HRZ1ZDNHU]\V;3J@&E=>/K:0O\E<&U XPE9?YOVU"SU M1<$M>X.Y O*46XB\%I(@;U.^"[_E;]^+ >'^A OC,;N>HX42I=MVA,H T./# MED(H]V&+:"A+S?BB@V5MF._-AH3+R?HM5^5V'!W:_TULM$=\I.E7(?TDH2WE M%3*H0W[[7 HK.6T![''!5)N=W9JT5_'3FF!$?E T5O_N_2=]Q)ORM#YO6\-:C(%:G;U]]N*?2]OZ MHPTZSNG82NN\A=E_M?Y_Z."!,*,.:K!\RUUX3M7LN8:#?#'7C]#0B:T'V-FP MRYE3%20X2SIM!D_MGB%*H&#OARPM2NXJ%Y*_JS SWF'(C<%AS#%(8^$)H,D M@]V7?_R0R"A=;M+BI8 3%[&< 4ZE%;NX]3 2 4+)6C.J,:VBPY*/=JLZ4-XO M@>5%5JATQ/T.;W=8JA>K[KL4FC=M(9/1]CA.I^NK*R#*/()I]ZV#[UI2-F.7 MXD/$DY3UTT[30HJA=UMTR0C^_D+7?LIN;\&@\+*3LO8^#>F[>5).B [IY>]^ M>9)IE I9&XSA0GC5V 487Z@(9[!U&YT/$T3#QU\:HIHV,[UA6.3][4&37XR> MN-LW.N[Y5CQ)^,GWLT6X$[,-3ZK$RZ&%EF"UC=1P.H'4_2P1[W.C)$C9$@AZ M$7C"]>VP[X5[YQ+'YBOK*X>[/E7<>.)L%"'@B8-=!8['I[U*4P6>-\18APJ?E+4YWZ&3.T4=?=,;M\;/DL(R M9,&/O&HX=6)FL'LEM4"'IE%?Q H#8CBZ>>-'"U;-,X2\LG4(N'PQ0K&.D\,# MB>UN;VY*1V=80R(CEC=HL"ZB:$L8_00EMTOT=,>&%Y TDS.B&L5_V^&(RM28 ML-+A+W+G][R6_1DI+?HRJCGC=5LB3(%Y> MXP'?&%2,=8@BSC,=:'NL'O6Z$5*;8%9;(NO6UG>J>_ M*I,=G5)J7_7BY0A&,AU0INP,EBUHU=X!CO3&SMLPOO!)TR/FI^C!J]\=*!F\ MG8?CAQPB7G;SG T-V^/V:T_JYD^XP2&Y ZN[>E::M_ '/A@_X<"HI$C'(L\B+:EP7<+E.\OH!]%][=DAKO*1GQN?3R M7F4GS2,T!&,KU 3A&-VLG8&O,Z2"BK*>HS#?U%WY&4_F0I)@H@2'5GQ=@XK= MLO>SE)T=O[+4[AYX(+O.+QJW82K-LR;7E3F!I1C>A868@YS-;#GC%3+ PHF" MW]%-QJ:@Q>C! ]TESRA:P=^.)#YOO/#54?W]_V+O/:.:C+YWP2@J34&Z%(DT M06G2%3"QT40(BE*%J'00(@(2)"32.P@**"B1)B!-NK2$4$54I$M-$Q4ADHB& M5U.XX3^-C<#'Z2 M^?C4$B<)>O/[-LC'PYEB-00' VT+ T1)G#[0S!473<&I-C4&!06/5^;Y5;I= M^/@S/__A(P6TEV&&ZU+*LACZP?]4;_'7D2LLSQ)#W?[/X:4!G"HG'2T!5/8M M*[0R,N:C?W!5&?L+]&T"V^XG]OQ0-:8/G2^(CKA"4Z;M(;N? E\;/Z,85+6* M;=5E&UA\C"6[-_"MPB4E+K!T\JJN]RQ]39?Z[)!^=[7IV%/0Z%_("_4GEFXX M>P33 O %VND#I=NSXBTSX&YCEK!$Z,E)'Y5\?^+!H1:H#? >6 M:@R]I::=S+ERO5C*)^HA3N,,H2^,M @^664%# .;3BL.>= MT=!7R*(K'6D>[E?\SPF0$M1J]1:4)5:&(T(/7K7PF(4&]O!QA:#0 :P @&6J M,WCZSZ7;)$"2 4SV824,B^C_8F_AKK=MY?L4'G4X%*R7-S)"?%CSDZVU]67/'@L0.H0-X21@2#U$48C"*G$O2H:7 MD\4 %3)BOVNOMC3L .KH8Z+[N9^7)BW41JT55]+-DUS/-[];66S6\_J=3/-B M"02");DZ;!5.+7,LRZ>;7VS'O*U=WX#@[EMAHDED'#=IYHT.X@/&GN??_*Q@\X$ZX YSODU., MVX3DD4\+'2M>J?-Z\U3M&O.%N?.(:(ONI ME!L5##+&_U)&BJ./O)C?F60PZTK7\7._0LN5[NB&6UF M>P<:)CXLWJP@':":EWHKS%.;I8/NA[8B"-G ,>P0<6%X6/$($!-9Q@YY_>GV M!MN@ @Z/J3QO=_Q#\$WDM]Q%[?&(_:ZNRK(A L+Q3)__+53_VX3J!C00"AP= M6V>Q+G()94Q0VCN$, "W&3=D0?F( 7P1PTGUA@PP,V9J;Y8KV?_1D=?Z.G]\ M_XXTE&B\$,WIAK-$T./0UF\#\(3[8[152@/?(A!$&DX]PK#(BB6E_'R.X M(STU[>SIUTN%-6YLJN7=+MO<5(T/7Y'PBK;Z+\$LI(P'E8(L:^X0G.Z*3X6W MJ6W0E.@(Y@"@^\*_\)*$"\J,_BW%G#^J^O"^Z5]-B[L_2BY_?.+JQZ=D(.ES M^9G-.K$QFV=EY'=QY.3E_V3W2:X,4,;IJ22\]/<\3*],Q#<;I@N;VS++M X\ M"M5:H5Z9D!;*"?8H6017^+\033 4!=2^T;3ILTP3!I@M_HUL,D0\\)DM-NL] M]9MF,-@^&J&;9BBZ_X>$C?9RNN1>NY[WL7YOXC2_/35_\^7ZPELO^>YG_#MO)0]"R!*UZ3;37DX MRU5@FP3K_.-.?$Y5:N/-"[I[Y2^Z?%(Q%G&DJ+%D>%>2JH3\7X%N2 M"?@%"1(NMC3@A-U-^D9_\1'ZX:_EX?+.[T;O")]TC#:]Z?-L?\+[RWF6H>I$ MGL=]Q+S&$W0!#:O^IV?EOW)VZ9]DWI\+'Y@NX MLJ7?SM#K9F-_-Z0)EL847)S2\?RY:9&VKF'1$3XG^?Z!#QOK(/%>1=LSCY>\ M_=G*G#@\B02.0\OC/_TG=TL TK.F0Y60RH:@PNR^KO1TCA/W-G_GFZ?$K>S6 MRY)>WJ&#"M;5"O[I?_P(B#E'JDDR3A-E"F0R-BELB%$G@*'74R^:=I/SJ5<9 MQA5ADIUMY9\2Q @"MBY>;1?41[-^4(Y4I77AXG@:8Z<-7S'Z'9Q^673^(V_! MN&*0J0% M)?GYG41$\. CF4FE@VEA#"LF=_4,@^*-US(QDK$KX1A]MIGY+"%J.W)VF1I-/5 MDW 2%Q%U)9%' TIS5\I%[PX6G]_$-V MQ^-!NAGS**.UDH:A-/"$,^UP#1)S!2BI0>J !9#GSW_R])OH5B^Q,%ALK8V4 M4+:-,-S2\UNY.TQ"L+-1O4MO-QB9M1OD]@5]7-??BRM)<=A?2BV3%EG(D;(,: MV]I+*FG9) \,E5E#P=!.LJ]11 5LMT$"*ZVEW9?KG^]]IM6PQW)9Z2G(5W]4 M\Z#MOAT*"M:%KE>R'+A3[=S=G3RCQ2*SR1,!BKL8%MA4*AW3KVF[JMU:%S*I M[1<:%H8Z7]&BCST5?$7?[6I*]_L4+TR5__^BVN7__?SOYW_)4YNM"&P1B,+L MPU6H,T L13A&TV*B[OV_K+)PZRP! JCYH*BL\BN]QU_*I.Z-/"/;BX3=LW5: M'HGT[9$B8>F_X8 ZD7,8GHBA*\.XRKB="MA7VR"";SA6VM\$W#R\'D39*GS' M71RF(.3GDC-&Y/?+VY[K/;'GSJ^,.__;$1A)4'B?&]N-^W@8E.C)$ M+\YN@UX;N1HN>;'TO]LPW!& X<5Q5)+\=(ZN1,6Q' M_T!;>A.TQ.]!//SA,7Y0_N:]-_QEU4I)H@JQJPQ^?J]?A2/DR1J[/Q=ID ^Z M!&YE/(&KYF-ND?0X-#=3:'SIHHU%?9;V/#<(W06VG]W+@G$GB )0K[$'.#5. M.E](Q5>\56Y$W:CHH*6;9/:+5U!VJ+-K]2X-ZBF?(/=N@(,Q< M.S-K6K<%%DL\9)@MOK3:MG;ZM]SMC _[;R^<-[YZ!R;U#4._AOELRU6T8 D! ML\Q+30P"?::F;C@HDDR+#M)W_6%5YCKD+S7A$6G0Y<(7:=\7%!E(\>[M:&OA9?T.G8DGB M;@@A=$C?JADE>_-?9?/B)J/Q/[*&>1UR16&R_"91^%JQP'="]QAN 92Y& MJ.U13-#=9HO0VQ'N*I*IRKF'78T?]I+B!-91+C?3FMD M'4.Y KID&-B#$$3>!J5 -.,M\)^H;YZ:ORWI>C,1H=G6['O]]>9ER^E[JL?U M%+MX8+"(.\@I[@XE8>(@H@"FEGT>R&.H+N+CS47)J;2RW&A;;U>=".&BHE1Q M>=N3>8_TNZ3O1;A,6+X%[^>%BBM;C 7#$&#X&[I\& ($[X/GN?904!50NG'F M#4,FJSNLLK_"'R?;U"*H\M$W]\J6OI[0[H7RA*&)&_GS=5.\;[B((15BVJ%Q M".Z>G5)IVX84:5/L('YNK;>L+PQP'Y2WP&?\OBRDTF?;^2(OK%TMVW0W"172'1GEV,;U+1% MBZ7K>@#J+!L4=*;>Z+!F;[%6DC6E$\_]T-7\O'8E1VQ4WKTKGV7^JJXUUO*) MTLU_5F? D)VR;QX-.0FX,[BC3"A@2]\:@$I!=)<#X/,%BGOH?G./OW=&'1&F M7?GUPZ5N_8A:02BI'*?#>=QR6/T_1XMARQTI>^KR*LLDPD1[8GH+8!OG; M"3,K.&]P*GH=C-D!:/:L4^'T-&%)RRE_IA&&N%W^J]$246YQMM=E2D32ZX\F M!=,/W+1DT1*3#LNNA9C>X6SDE7D M71"@UJ*A'5OL6I%V*[(\,#4I]PW/R'Y,*J MXQ^D;(,2B)(8LJQW&V-?LL&PK,D_E$'?RZ_+ >=.Q%E?N:F0(-#F\P#RHQ2O MR1,&8_/97&%^%@;="S[(-?$'MQ#[L2"@@0 YQ;!(K.-4]B=.R3@]LA_.\VZT M.V$K[W"U.@\W;?:WXUV42V%= 8W(2Y=NG$HH*=,)0W?23<#*H7GR""/,-LQT5: #Z0R)N%4!%+'+T$WR3KSK M5/BZ15A4E8=5Y?7>X,(UE WB]OC%QOZOW>7O&X=V_1.V0-N@QXETIVS@."8! M0TJ[+T,;>X62:0/,&%:7&)F52>P8,EB!;8R+^T$?C5(0C'E9\7L\'?G%5>6V MW?ZU_)SSHKJA6]AY86;)SM8+AF#6+8>[7345".DJ7Q]A# L MR.U,<(@T9KP%FIF_&$3:8<8HE;\/$X\YA(J@;YP'["B.9$WX0:0\R;B2*OO' M VUF':*S3+%>UZF[V19;KYS@KC.:[)U[_KB*I0#_TF/G=T2Z-72^B_F&4POU M6?N 8)(XQ49CR<2#W;J4FAXA3BN"G_C](3)K62V3-%VGW5!F(W[,R:[\[IX< MF\P7"?!7_O_%RVRI:'WT)^Q>O-\'_5%78)(A;T]?J2\S.^\#*5UQ"I"*E#K$ M__!4V=WC5RLOBH0%J$U_3\<>PNFA3@)\=.IEH)V!&(#/010G4%C:@?/K8;"5 MJ&95/>Y/RL?7.7L3_7W]BD2O"OL6+$19YZ#D#059/ MP;=VGZZ)(L[]2_[\-?[#KY=(;\[BVZPWN2:>5_UD9?=(L$FS:PUL"3XFA9.+ M$T7W0_B!,(8)%9=8%E08R<0NM"R,/+$1?5J]].[I+MC5\)OK?6F/'U_[Y&U^ M+>6]7FYE^I>$J^ZX&O>*H ZC9K^E/[^RV9+".VXUS!7$-B"=6,P20)C*@NU" M-@R\]K_#=A@G3_[\G6GZ]9H.9"INW>-"B;0S99_6:]RG@>"&4IP4RA,(8.#[ M;*AC"I(1X?&6U[Z2OTZU@KQ<'T>'GJ@^5':G(I:C-_& ZR\N0JB M'G BA6PHNKNZ3;]4_>UN+W0<;4]QS"288%LR?CJA#@X!V0CY.E)%538Y>[7:,J-3KF#)D92M_.=<6Z9B?87U(4-X_ MN#Q+0'USDRM(9$Q2\&PQ1V9O$R]6#= +./W.:;04LO.'#=X'FR[7?%/QZ"/N M&9,K=VJ4NUX=H7IGO.+/"P7!JO"^8#F4"Q#&4D5/>)X&Q.COD6-#G= A?*HS M6I)>=KU6Q6E*95K'3?CNEPS^.R]^"?*#OJ0)089+\7H0'9YISF""L)^IE.'U MYV1B&K$5G-Q]DRJ: 3_8;48&9^+WA80_/VY"?_ZQ69Q6/%)[]?J"6@N+NON' M>^S)ZTFDG!^8PU!2B;$3#W@<,Q$[!?L,869S-DEY#A"UFN8>#I0Q=7I&I#^# M+XV$MPN%1)ST>6"Q*TT@?U[W>%1Y5-OHK[T@<+CS>TR[+EORWC?F<6"5#B4- M?EO_5@;PHR MM+TL!'H*WUBY7D2OZ85+D>G$%*C_6#I&P@O D/V"5/9ES,[*93!>UFD='.EV MM?!M_'A+]*LQ0/5U\HWXR^,G?^FCS'P@DN7.[;N+LN!4^ "QY"+B/+:?&)CN M1A],S%Q*>E5OW-K\>5B\R$8EH%ER5*MJ?)CU;?_4KG\C%JATQBP%0XL,95U& M;IUE# _)P^98)%A\-_@E/@ERS+K0<(P24O*.K5YIP3!Q4Z9:-MU?. MB?VOS)V9'KRU7@1:, 3)" R@@:5IDD^;7&<4)'9;8,@NO\?VES3'#_SK#!3V M\EJIR3>F^.9+*/V-VZ7YBK0'!"Y_[/RU@2TU2L6SI22X@F,\:; YO0T*IO$Q MV^G+U90/>K]9" G %)Y\+_E<4Q KI2XR(!/;FMR>[WU\UO&Z5EJMF][#LM^O M'D#L@ 8>='M\@HCO5.VCP+QO6N2Q2!]82F=R5G=4&:P&\+HR61\>7['H/\KGMD7BFXC:HCS]@X7K([L@%E"D14(3B"(?IB7%,+H(:*?=Q.Y0F<9F-YB=3KX082HR%R0FU%QQ^&Z MH>JJ!<^_MP:5VYN+;_B^"2AQH>@<>EIPCUBDX#R,!8YG#X[-G2?9U[#L=NJO MZ';9::8R<>$T[0;5GO&('GFG[LG8ZP.=F;4R[C0^<:GR;)J@&+3;!U2XJ<+: MN]/2S_H_Y0)Q\&;19',T2I.BB8WUY)M&J5/V$5?F?N3?]\E@?O7 GLA,>^SK MX,JWX3!X#LM'MV)+]U/AZY1V,-U>%#@YQO2>,E?$:8__1)W$R_XV@YF=86@_ M8QAU-XU]B4OO-%%;:=>2?&O^]@B(Q,?4GR!YS%N$U[38RKWA;[,,6L$N\ 17 M"1G_V98:V0^.11MRGD". )67@7Z*[KHN:!FX\LW*>*LSZ;O$VX=+Q#,WU.I5 M^D\*G/'JBH<[^$=VVE>6SOUPVU>R=REQL/:NJ\?")=4L?]>S5E97SA^[(G"3 MP&_T=^= JOA:X6P2YC;V,]\ 1('NLY6RL8[W#S4JCG^YZ-X?6F7=M#IX(_.G M=YK4/7,^U90'Q2XB_GP_1+/ /%ZRE_NVP$VGDA7"?4>4Y$H@;3VFE2?KN,I! M)[[_>YGL$Z&DI-)=9#.E4]&R>-^\46 ,"N4'.\UYSOUP"@TTC5AT7!@3']E# M?WM8U5+6R4GAX-D]8H0/Z',8PB"XM8"VEV'"U 8WM0^*?FX?@NZ#** N,!1S M_*@-F<2#/I-_,@WZF*^)9\-K@]FGPZK>'?X:IS%=\>OQS_E3=T;^1 [!%_@( MQ,;AWNRY N9-3B$[D*OZ!L!6NGU7W,>H*$C6-;=I/SMI>#,LK-;*YV7-!XQ2 M6YJ8W(LYW*K/P[^7WQP!!UR&8Z'[>/Q\8X':CZ%?KM-EWC*%#F#2P/RH:!*K M*]. @L_8!OD]=^X?(P7?$ZC,T=[X(NUDO.64FW+UF+!$0;'AYKX)> 8G'>./ M!;1$:5L(GO31&\<$;"1!=L] Q-E1L^:'*X"/8^0BN-;:K9QAJ6YI"0^I]M1% M6<^HKUV/)*("RWQ_[?H79H&^C1[#T]VAJ6X[]3>.!' [;QS)\Q;;H,$&:62C M^:ZR[P>[W /F*U._3'M/UJW<+7_R0A,\[W/MRYX<"?"QAF!&\2->@,,!%=X( MP#UT:)86Q!!UFF%9H_.+GWAY/R]QV@Q#:'J\O285 M&1+S8U<7RPA#L/J)]XH3^Z$>,;<&+?W>PK(FJ#"E?*-ZK3_VRJ MS!THR3>$:94E;*<-JW02%C M&?!F$]HI^@+%*ALE5H7RXCR'**T5R[4P>L;B5^1\\7O+%6-ZWC.EMQP.E3^Z MG7;A;N(9!_*[UW=$/W5J_H+UP=LJV5(;5!A;C&^G+?U+P(J9!\20Z[SZ(4+3 MJ,NOD'=AR38QVR#!2\8F[9[W80:V M4H#AI'A_C5$[5^*_H$,'=9/G=>,G^YA_$;?F,5Y-38^LN)KXN_4 M;.,0E_OZ]P>(QQ6]]-E4X/MCG/;W$;,,J&!=_X&7QTD#!J2I5!(F?OYC[*L@ MO!3. ,I$% C!-^(DWZZ*%-H[>N0=B]Q_KUY.E M%[ Q]ZJ?6A#'AK]"*3!"L 'T#ML M2I,PS(UY%G593+5!<2#7A[-,5CH0^ZN!+1[$?,(S]O!.(H7ZP1/@K5]+&+/D MR.1N(_# :?L%BDGR4;K7Z;&4WT\07[-@3>\S+(HLTXZDZ7>E6T[:&L0I0P)X M.#3)J?+;T5T+<&8TH%XS&,W 4\"T#H8X.,E3+LG%I#;GB>L?,[R1Q\U)&I<] MT=1XP_Q-ODVQX1%PXS7R-JC%CY9' F1SC=AUE[[@@]->,C7SLVR_.WIW&#SN[D+'A-3?1 MS-&0K;Z]FX52MT9E42$:LD\2/^ZZ%?V)?P@J#"4UF>*'\/-\%-AZQP[E'6%@ MKS)F^^"-HH?]X]WI&=";)J$M^63?@NLNOEJO8#^7&HE283P=SY9V).#YH#>? M!S&W@!S6$;;+),J(#!.'E0"3_04. 9?73 ],W4];[?W !]^3:U)HG=9]Q>9Q M'OSGE^S]O'5PPKQ#XTDET#\,$IZCE-^U 9QJL)PPQ )*#<-_6^J.S\]MP))_ MZGHN[ST?JL<0>?S2Z@AJHU4J4N&9QN%$4 16 D-JP4EPGG/% 00S@_,*>G,; ME D7QG4)!*_T9%^<#@D)+HOYSG<(]IX 80BA!^C9 MZ>9ZU VA@&)3NE-/P*OO\S/8 ]Q'KUSLU>)^S7N+6QB&=)N:ZK^^2=@CQX[B M\#AP$$*.NPAM0O0C "5G CQ6#I\ 44-Y ; 7,' :1,^"&Z9%Y_B8R$FH-W;.G;?JA#)D7(S;0J_B_LF60W_< MGS!/DUO;K3,&[]Y#''?W5]4XN8?R0!\:O#'/6VI%SO-N"Y8=4$3636&[DC<$ M R8"%97C^R9=A6ODTF_:[R)=W08U(FB7 U@!W(]<.9V]$');N*"J!NDT_L!'?FHX76 "HY /86$+^K_ZK66KY]!\?-$+O>9ZA M:-Q(.Y01BT$I:YM,P5LB:?$,E4$PW0&\#T,XL0WRQ4NX 9B!^]FQ.NPHALI0 M5\SKR5.4T/MO794:/B/KJ_.68>F.M*N_ #M*TC"D\K:33?84I"= M>LW,5]R/]Y=3PWSHKZC#QES#Z8A1R_3++7:6FH>X8\$A/I#K69.'?XU(IG\A M]6]ZQYR"YV/WH=08S00P/7QP(QEGR':!R45A&A_7D6/N>2@NO_OSNXVA+Y7% M",X[$C5!6FQX*GE9TU+YW;[][D&\-8G+Y$X06V?7IZG0^4=,"Z"2BM_OX;Z\ M%D1/[I,375^H!1[9,23E@J>8XQC_'X*5EW)/K[>-93>.B<^7OZWWR34QW/7/ MRP)]EXWF5/%(8/TV2!)/REU6Y.!XI@ G;V$.X+3\N>!\%D6T=T,>V)6QI1E@ M/NYYNMS9O\#AK9-*V'X$_GU"Z0./>),*-('8VCXX!FA\R_P-G?=BHH#!*C?N MV(RGR"09EWR=7E'Z Z+,,%!_&K7G[M^@E;.!=0J.G<><.S:]$O-NWCH#^?3? MT9NGWHMJT@?C1R$!CSHV&(@],%"HFZ*565^:W_RDW']D#RUT"\97N/J])N'; MQ< []P*6(!]DIROL>XXY5C7('BV,-OP=\ ][:!O4G[2SU?M;!UFY#1(*@ *% M?].Y0CQ>LN?,)%<7+H4V#E1Z#YDUS*+ $Z+9KQGFY'-A_G,S>]\>CD_ MX9!V)?W[=/LFS!)C0FP"KRB79OF!5I[EV48FEDQ?TS'#B-3N/ M_SVM]Z?5FDDRE!0+?9U4\&(^8/ZWI]:T[LWV:UU3<,\31:EZFY !ARK!CY+A MAV1/PV;@^]$";!5 ;^?:.*%*\M>\%QC$CZ9 MV&F3U4VS1FV57X;G7:B3!WD M/>OHF14Y-)?OY1%SQ?ZQS(4_B)I@M #Z=ZW^.AHGXWOP2SEVN+ZBPS;TC1, M.O'E<")W!$.W)\ZU,X\SI!LHV;&=O@V(R+HYM3K&5*OO&TEI1BE-4RH"M^]&7-X<43T^BPLA=-5"AN1^A& MF'$1 0HTA[MGAT2[+\-54@=OA>8]=]N\^^C'TMP_8_Y=<:,G1D437I;LC;8\ M/NKA65S9"Z5?'DMO1B^#7X]EX;TXFES!24:Z*V,;E(4R,RXJ12)X>4.T>!+V MR2C@8!VN#-*T/A]85U[A1]S[/F/92?+P]!ZD./)*1\Z_= MXD;$,YGU0\!#Z.'MEG&U39N<3$7 WGY&JXI-WYDXY M;5-%6_[@O49"PR%.*<0$/;,-V@T-L9,9\!3@/&$',"1(*UO]H?R9]2@UH^X" M.>FJ]E^M=>^EPS[(>WY5.6YW^'54W!.7ZODTXI6=6@ILZVSOZ?-T="[ >ZG-,BRW1A;<3]1I[1FC,<4&/[&KSW+G2-?!E#EBT9_ M*7E\,9,5PDYT:KP0?2^:0&Q.ID%Y3@[CM',U41< )=9)9 %E8WV2,0I75,:/ MGQ48WIASX MOT'3<'M1T3L7(F$(_N8\];871,\F$"519P 3UAFD&6P23EE_4+CQ MFMCCDC -B$&/E@-@X6Z@^G_MH9Q"ME]859'"Q EGUM,ERE.U[K@V3@A$9&7$E:-4>L] '4'!JX#3J 2/YHZT-;C?T.9I89$ACU MXV14)5EZYQ(!GJ:(TT5/XP^A1?VQK]6ST*?9^X$ZAN9EQE@_\2#;0.]#S O/ M0!U%2M]/]9-91C?2<>?E,I/.C'W5'_XWRK/"+0S!C\W'"D=/8>@7!=&'X>@/ M_WXV,V!#./.)B 5X,N1 F\\ U5]YW@RSKFQ PXHM MML85DF&4#6%YG/46^! [!A!DG0%:D$-S.(7;1<[T(;Q68$&J6L>:0@;_^P7' M6WU]9T95_?ZXI8%^;8/FS :A+8@!W>0"N 0F )X\#J@[,D3*0UK@H)A.^0[V MJ4J!LBS-Z)J4,S;USW-MOLQ?M/I6>]S]G3ZTZG\Z+O?_YI%:P;9"U\/HSLS! M3X8-!U !C5-^K>,-BE_?!LS'N[_.>71S!/3%J_7^<\G)@.\^;IE:%NKVM5=+ MMV!>FW"NT&&>J6LYN7C?C<^;O-0K!Y'U_[?N]C63@V7*ZAJU%^I]"Y3^!''( M .$@M"1CO]PK08;H/:[/B+5BX] MLF*]]3@.+CB;N"_/U0\L=M$-T>]L\$SNYJQ7!MZTJNJ6V 19_3,Z_[ M'C<@:)P3.F;T:F;#0_F?"]NP87(,4,]FBS/+-\:.Q1U?7>)V=.0*P?02K5>V+ VR"12)X'W\6,=VZ#5I9X;/:71S26 M0(S'BT! [).3.'&4*GV#"4MNP9JQH#"6]^1?S]MCAMCNITL+^M:T404_/A!( M<-HNNB3W3N9UQ>..0U7V(MIJ-3-K'KI68=0O#'AJ MX^C$Q'J=X-\]NBP9YT:#EM@S3Q/:7S^2A'@7G7_>K8&HT:B5[]BZNCI99G=. M:,0_]SMJBQ>4A_YS[]R.>*K@CKAEKV^#&"$3T=#VY3S"[Y.9?%8,^$J>N<.!"&<+FK?9$37-@@("*L# M*GXW''Q96DIU+73_10QI[8C!]W2T;A.APGD%)E6"Z/58F:%DX^^(D J<( M$/MP0MVS%1,;.EI*K'O8O3-YD@5.F^?O"LKLDEYV&/1H5)QA?4T#L3T96+8X M#R9NDL=XD+\^Q^#K=[J?G '11[^'R_@P"A+8?)083_4IW6Y#75?:[Z>5SGI% MY>U9"WK)2@>[-6Q5 V.$F;S9U[!N\=OP56$:BY:#!H3R/]-?9?]"\@#,IV6*3;U%TS#)Z]# M?#M@^G[NP8VI.>.:7S$)1/JEC04JM9(M=IXJLZY6Q_W8V?X K0(@J$?+J."] M@:;,ZMOYD".X[*NV52^:S-J[[<3?EW[U3E+>V.7QPT2QB10LW0V^4,2L MX]3R!$(B_F!X=A:>;I^=@A&(B#FZV1] [7$?WK<\>RF7%I&NU&ZSVZJCQ_GQ MOD6&A;A5UU8]X=HV*&1MA0AH#J_OHFX QX;7(VK0PSA)X$,Y( ]CB)3XA-:N M.7/E'CD6!==-.>N5:[2?."ZA:MOQI%T!)/@A!DQZ:^X31 [2Q*28OBR*KE,] M.17R._J8=EW%(_6O6<=4* .[V+>1"(K )8 YC] MK;K\WYD0^;:ITLD%M_'U_=);H;;F'U_W-@0H8 TS&UVJ_Z: _LJP)6N$1!]%%N)#'*\+1!QZD^JX.1T\/6G MD>[7+VTTWTH2A9?PAE"('@+O:H7.!3$O #=91FMH#>Y"#UWT03A6=.D'Z81[ M1["VGN8WO944 C*P#]%F< R+)T4):,F4=T9\IW MAE5V ]N$_%+/?5ZK34<:F=._C$1%5\'Y_V]##@OB/F_%;"E8!0X[3+K M/GIP69>3QK,=+PS4"P9J>B(I=H_O7R.FX%3F7?S=C&,#?3-7NO*^=>I_4#[N M(Z[Q^6>_=YX -XSER$L@VIC;B#EGI@XGISN,)3P2Q."GS*Y'&3ZR(;/2LY6A M4JYP=RVWGIXNZZN9"Q;HGN4'&Y M%+0;-Y]&!N2.H=-WTG4(A\&-)3<)OST 9@0H-ZNT,3T.V( M3>%YE1;_IIA!'CF*Y+Y;/@PT\.2*3C9-FV6#;"?Q#QPP(&]EHT3)'PSZ/+4[ MZ8GC;?B.R6"Q$.=;)?DGK.]D*FO$/%-HVD?%WP3O1X4 5A31AYDIRS/'IX M#.\'2\"VB,9B2)^7X$Q5GK*;9@@M4/#LXT1QI+WN7DS?L3M;XD3B:)6\K^NU M2T?%<\M:<+Y3'V>4WM58L0+92IP7.*V=#2&N'"<9M9=ER#Z' VK1AY#J?>V* M//A/N$(^VH:;4)M0_%.>UYMP3GS^7"Z_IM)?1ZUZB3_W>#ESF%/[*Y@GA<=S'P,B%%A>Y"5?7)?.S"8ET&*BD_G?\Q\90:]^=+FSY>>M'"4>$RP MX"[55]86%4QJ (YF#S>D+@MS*M%0_VW0/K026Q-@D3?FXPN?-7!'3JKU%='W._CI]1/,S:C9X$RVZ# N /[D-3 M\ &PN:)!J!!:V=UE&)QNKM<0$))/#. +LO.[(VRE)7+6QXY[BZ]U>%?1_!]Y MP+ '$F._O<\N\I3:%^A; D8 :O0 MO8O'()YSZO#^HJF89N@ 3 10H6HOQQ7O9AC7D&UFEM<_7Z"?RG,PS'_%VJJY M5+4[OKOD;] 4AD2![V*[ AP>WKLF,G*W3DKO^KK+L, 1(*P+0(+(E5,B9V/AP M[$&4 <##S* S$Q'@)#=F3X5M)1R)&;AW[]X*SEYUYE$O1K]J2=M8S M>SDB**)TM[[#1_%6Y1.BU?@9\(ZW^OUN4 VN8*MC" 2IB\[\=)^$V&\RC7D X>AHMA""TC+)F MG=KK@9L,-R()5T1JIU\J%G_C'E\UK'#90*L+%2_RN1AVPN;!B4J1=\E_Y'B> M7LW+5L_9>KRI,HA< 1]Z ],?L&+IL2UF<$JNYTEO_L $A\DV%"PL^%APX>:' M7(?7#UXJIUW[;&U]K..\_D_NYQTZ'0B;J^$*X4E@0*MA?8EEC!RC)#]@7Z:_ M!H0I8['=9N7ZR +;-I;SO')WW!!U-/>ZJ?O7$P;!+ U-C+9W=&D8*4&GEY(EO,8F+15MKA3A8MY?]GPWD'8RK.3 M,H^42_\B-BO7B71;JBY;W( K%$#AL_A#E,(-2R%ZN65GSD5F[<-LO_O:MRN"1U$:]*_Q7:?BJ1L MR 32/P>T'7R*T%4_:?WH)35K<>KCG4K^8V9J-0CO]$K["K>T@W8C7:JMP3VY M'NZ&&@T\3$OZSLG!?._Y#MWZBP<**RG@A2VF[:??\DN^1*KQHQBUBMK<81__ M]8E%_6IE0_DH7Q6^-KNH*Y3]27IWD:_NP8G9?XO73\+2 NTL3\K-WL<(8=BI MZX^=^XBOL]F2YR\6>3+0F2PK8/F Z6E'QTKV?N;9Y;\^)C^) M)[7/:W)'3!&TU7H,X337;)ZM.!4^.+4P=,^&W+7I=\.ENKOXW8)+=$OL'=>% M$35)Z1O\1G_:>V'98$%HP$9\L>).QE(?FL$IT[/36E9Z/OU)/TU03\D5N?; M.\+'._R&[&%7EWU7^*E6!!B@L=Q @@'*F%XPH"X:A_&#B5DP^)GQP,U($B9Y M69,QD'\_,N%E_JI:>[YOS^;27%Z(S.B# 45G[TL'^J$EVZ#7X'4Q*AY0![/% M:_J)C1M)$.,F9'/??9&2Z% *#6J?AMQ7<7I@:Z+VSF*):$C3Q5N@A$B+I2=+ M3<:GQNJJ&C[@YS:X0L(L.!NU#8J_6\$+X'Q/E,UD2W9:(2S6W)42A=!"G0IA MRM25$P-S+(+56F+CAAAN X*6SOOY0H96@H@R&%(-V@"P8PFCA\'RD)-LZ_A> M-\PP!WH>+,'5F?^N-\:?Y-WQZ0#W9M+57 %/RH:WK>J(JL/@-S/+A5T@<.F4 M\]LQQB2S'!!D0=A1G/+L 9H!%1^/,J#/H1SICDX36NOY=O[]/C':@W4#A7=< M?L(_)$E\)<@II5T0*.K_EL-)Y$'B3JO4-E7POFV0O^A<#9,USM5"&ESK>HP* MI][I' /+:6WM/7HMJ8=R7744](<[IB0DPTZN M-8,*_ZZYKM=YY-:[0%)UHT M^N74$,7R-4ZVK*#H*5O/F M<53M2YN9$_0%V[=J>;MD62)X#2BI"_ZK5JJ!DXH7Q?QNL&V8_@?ZI;L0R?P M\%" .]:Y19-G.!*63\S\QHA^MHV,"B 1#]A5V:MD[WWZ.3AI"71*USSGY:YO M\1ZP]25&I0VG'.^'V(4>-Q5)#WWY&6 1[CNGK+>LM3OESVBN6==?4= MRSVIJN"1[9!$[*!R>L!U--!Y#&VF#P9-J KHD.S M.LO):]&V)-S[9G"67*5F;\9^I[$;Q@--1\]6F%4ZRV;9ZRSL30T\59(%,9PYDD,'<", M>:: R9A!:Z_VDZ^BI;,'!"E5[89AKM:O;GU^LCS196KYFOI>_T1VR$_-+PV MT4)_&XP';V&='->.L%W4C&2W"*>/I%[@4ZE@K0+@3C)8+7%;'-16:C6X*%FOK_PVN M"*LDC@KX94GKU'LAV83C*6.N+!ON/%H,$&9 "=AF?)*Y3#5 I& &E")T$[O% M2J^?%T[7O'8@K&IIT7[T<$7YF41]8X^EN NYQF> -:Y(SXPNBLC;)""R(N@ $O.+-E;A[[6[?EFGHFP184(3"PV:KT(!0,:+D.TN2K.OE MZ8?1>]&^'D#Z93J8?3B;/]E<5T4-FP7UOOIHX)/27[7" VZD?@.1HNE@ZIGA MA_56E@V3IO^//73_[Y\W&QGP%E%"]AS+KGD&8L"^,,DV"ZJR_S1G5V6VRS"M M*RV#[ZW"9(:/B7]-T^IDM5/@0;OV\<"/0]VSU&Q:,DN?^V%6[#,[$!@N_UYP M]T7XY-/BZ-+DLK\'-=]*,F^]@;2NP,%XTBMH4V4<6A@H&-@&"4&,O\MMI-:% M5XO$5YSY^>'TPH'&+U*RUWSW]T,C[- ZR/XA10T@=N?EA!PPZ]DQ]2?8?J5> M=V-#35?UE]Z(K_K?<#[0'5K"$G*/40:L:SH M_%RA,M9QY ()G]0-8\"I(;$ER,*UB]FLZ(O/ER[)!!J//I DNSYNRL#F)1YB MOT+Z/M<<@?;$$+!W*FZW#B$] Q_>#[Z'?9X_UI/SFX/B^?S>W;P@:$'I[5S+ MO[8LA>-4H7<#W,E>3TV&EIP"5-(0&<[J4;'OR+/-;CW2)7-9PR(/B$W7TFW1 MDP_ZCD_$RD#DV,'T0N0:V2I#Z\^2LLVR)/[_.%BM>^2NYE<8H-G0NY&(;VG- M7N?0):A^"<%_B$+(!BHE8/YK7L3SYG-<*0;XW(G+4^2\J23+:SY''@2-! S. M855.VC][YET[:_G_QZ/5%[!>X_ G6!Z@OX"VCJV',KR8]O2-0<1\=O_R"4;R MD&Z*YV%Z]A QWL34/D\>L/_FFGIOS'OFN$YP[GP,(S9"N_>9SOD[UG^@65BZ M0Y$F!C@VU/Z?JC\@D>4Z3!>[S>8O^[$-$FD5?JYICP#L=7]^Z71/-#%]IM^K M_&!PCVVP3)[YA/F"S]_=#T0[-;]"%PJX0F9A+"E4. "FW]IDALVPSP"]KE3:[?-/CWY1'A39K M&IBR5WG^AP)\6+8H,T[=-NCF*8@R=Z*)?8;^88,&(V^T6M0A;_4-_>R_YBSO M-K?NE6I7GM,RE^:3?]6?RME,"@1QO$MQ%L : \KL>L.IZHY^ 5"I!RIYCJ9. M6!:=A/>#)>V=N8L2QW '&5X?OD7TQ[*ONP M;G_7^1)7(\Z 4U?+T-A\_\*HOE10=;VTA=/_:.^ZHIKZOG04!*E!0.E$*0+2 M1)H%$T1IHH(@1$"(2A,0H@(2-"0*TCL6!$L4I(E()T@+'40Q2B\*"?FIM, - M:KB0Y#+QO]8\SLO,FC7S\'_8CW?=[^YS]K>_<^XY>^O+]YW=<+7D _$F3&,$ M-F$^4S1V8:0X"I=).?]3%R6#O6;Q[$#=JZ61]*JWHFD#=P37V0%+-G/*FW")H] DD]Y1=SK+*.!CZ3M2/D) M7'#;+G/;:X/,0C.;P$O"RSF1[R[;!O>J2!!J' 7-][?4?=35N*'CKAZQS=VN M75 U_\XA[)U-V"X34@9&H%F!13TV]+VVBE4<9\*\V3\:*0YT1X6H=*CO:-_C M"\MJ5VML!-?8L;P"0Y0_-1U5T\N5]F%;9ISZ;$I5G(LTZBP/YCZ1F9=,.CYA^O%"8 &294!7-D"NN-2-.<,WB9EUKP3 M,2DTS:;2U]*QX4<\)0*.C3&WRE4V[[+?63?0W'%>\(:>D9WJ594/2D8P3F,R ME_&OV@L9X#X4TY!#((QB*E>X)L*=1(EC0#9&I/<%;N@T>%VC]TR"K+V_M?:L[QGR6W3H3*&;$E>/E\,EF/(F$Y**J)FY"=3"_C5-FT& M*K!N>P V-:R@(3IMN(BE\:B)\(DUGV'B-AITP\/>6,=/.T7VJJ+5EHU+UH1S M@23 ;1,V5=9# K SR43:2U7%9F#O0Y8G?>!'X2M)(!Q%PU24B\ ?&6E4" M)[T3B Q*3"9XKOPGVW4\QJPYQ,GL9V- KON@/"-^AKB5KN:?*?#G5C)HV$LD M5_2*.8+[ I8> F7TA*Z2.O@]5&W.7>ZQ6:5RN7.?]>-&\MSG_#>&V\/DT:YA M&GK]G+Y];6;RVR8 *M.5X\17TNTWN"[\2-@81FJ?7T!N;> ]\0=CZ:S;]+YM MHP]+D62)F!-^"1^,VQ5SM[MU2K499SZP;W;W,Q??BDUBE>,?$J*7$3IH"ZZLG# MV@&V3.'7'KBN!4B^SK#\N%_QF[,#/UX*?3J8G[Z_LJ-IYR71@V6$_?^J,#-% M0: N)U%"41-:7=.H:E;(GX+%UBV@L1_G0'#>I[2R^6"=_>>_!046USA&6L", M&NK>)0M&"0:]D>IO0Y3*HG\0F7Q/;]/\JQQ!K!FU!I0L(5@ M$[TBPV)/1$C97&/.1-9W-'F);B58=V(:IIERF;(6^$F! M0E(M<:J808YMW1,L#3;^P(HL>L.!FD QU?0OO=^/6VQ[K/>RJUGHON@Y!5^+ M.Y)P2)2O K?9 %BNC-)QH#@%TH.H2 N631+#<.<4+MAFF*NXX7MG@;SC@X89 M567D'\G"404[O.RZI%T?==!;=J0N+:QSM+&>0@].DUX-US?+B;PN7NWY-'/G M?3=A5[)0+^S!K;8DV M4X-LHHU]AK3QT<#/NW4\N.<7#4[(1'.#OZ_#+[VLJ>,:UVM/61?TQW&[\&FU M6]:.6A/#3)^EKMUDRWB]E]5C34Y5B^R]*+*]<.*,/(PSGT7<15UID>DJ+W3'$=M0X^5T%5O[&KERY0-*N=\; MX[*RCPX=NGRA7B84'@U\8+\ O_R-9:("!"=09^0+P4A@C>9=)Q<782A]I5'S M(;ML%BXKG^?0T$Y)OJ*_Q)3LRQ7+.&$%FEC78$6ZM'!Y8MN:Y'F]WM5YS7\ZK_)6II9BNCU=XHCGJ('_ZR+ M_.LO?8$I93RCG027]\%XQ_,I1U&T8F*]'+.. MLPU_%CS+\2KN[ M:J9K?/(),H$79^'(.<7U3>C"U!*[24G2J#MX3.E !)#03E95)M%B. MQ?JY2IL,E1RP%1&]''.^ZV71M#IL0_I_9?_NO[ JI 8>"?SLQFY=($IRO60K MBA;8/6)=,<[I3IFX2Y]9GN'G7 O/U!WZSS.(:S:UNJZ=;FE!SM 26#YV9 MKS"A/D'1AXG56KPM$3-<%0J([N.K*&HLJH:ZM,[PTJ43VUL.$&7_HL*7SWUP? 10N3D,Y'ZEC^G[5_558^: M46XS"3_GFXUG>Z7_F:B]'A47U/#ZNN-::$VJ9]![RLU(!W0P-B!:;Q,FIE=$ M)C?'WVXZ9F&_K[92;I^&TPVT>E96CZW%V#RB$P%JF2_9L@+HRQDLK8Y&_R;- M^)I+*@.M$:.:YO!<)8$573^[I7/)&QW)JV!8IW+3WM*S#$WQ4[X/'Y1JS(Z= M^UI(<0WM)?>HFO[@6MMD?Z"["!\TCQ0=*-7ZTFVE6%0;.>0:$KY*Y=,UVP+4 MYQ@O*L:_ QI[G>*CSTSL;C0G,_=KES= MTF!ADKB10%.7JC(PG40OW^59JM7<,E14GW&[9)5F.21DJ*[=\=27[OAY&#W7 MH"<)-^A\+>\1).6I7:8?<0N1Z7_H^:4GL].Z2FZN^XYX.T>&]G] 3R!R*7^[ MQL@D./#(*%HL)/JW#!=A%"7*=0$V8;VJ$D"SD8?78J-XY04P[$*,9VQ R>3I M#(-KAQN[]^S5\3!?_9#\9P7<"^\E3>7T$+=YLAW^%G(G#$#&_,>[2!+'(^GK MD&9W44J+)WK['YTX1: M:"M)9(E=:#OVOBF"GL8E(*3":4;ZSV57_C1C]V^5IMI?-#QV3Q7M9/RD- MF5Z)^>1XH:_TR.:3[CGS\)@QHB+R[V&SH_SEW\03]M\6$-=P-5V0""9!"F?. M,(]=L3ARJ>)T48J*6?\1+Z?)R8%#>4)Y.G+O!9C[E"G9BKOA%OP-GF7>%L60(PRR3^8.:[P,#7#I)Q3FTEX<]82<1\2 M&$71\E& #68*Q4#''0SA\RIC-E\HQIEQW )/:NG5AB'L&+/;YCO.A M!\3M\3KC"+=(:G(?[MFGEU^X$ZU;VM,ODM"^ DP $2S MUMC9F[!88C.*HX=7XCUI)I9Q;49,$"+SJZ =SAOW5F_OD%_5HU],^.[S6>CW M?FZ2)UY!2PWBZ-]#;=/Z]:R9>V\LO +S%QIO8"PU.$+OBAP"(D,G]A0\4K#T MO7A,->'U(V?YA2^6"!,^:LQOD@)N!A*AL!)H/SM1"4@U%CH9?QWXVQ>W^5 ^ M&&;[:,%^>5D_3V.ZW\SJ3JM#7__^[0H'A1TA$5+^PGO^H/T#V@+8V9Q.K[!C MHQ;Z0+$50$G!'YE-4_1$IR^,.9#KWZ5BE0(2JRNE;=SE5=\)PE_,O8!_PHX' MM*-J,[C2&+8K:VQ)X 6!BC1E?5^+Q]N77R!0%:D)M:3:^4;VLY*3:VY9&._L M/4-[R8UY?@WFIZ67MLP:AXI=:&WAOUV1%1#'5ZGQK7#>/4@9+#O5 '8#OS!U M8,++Q:$^ZV?'_%L**VP*\Q-AW$L!PA M,9D7>&7>X[>;L "L$@[>H1C0I6+<@U QQ%\O,$V]>9.]HX]8&>+^R52A^+DE MY4K]+_WL@PZY(KXVBTAS: ")Y.52:.6W4-R=<#KI3@1)%N?0,R->""!Z]!&= MAV]/+QP.MK9 'R;42+R*RF.%B7I\4-ZWJG8U(JV'1\'R9Y\LH0]53>XR3*( M+AG)?(%+244*#C<;!I>!!IUMF.U<\]GM)SRRKV0V7O!:,'?R?>+6T(CY9L7Q MMXN-2HQC9]3-_0\+'JW.3&:PD: 1Y^*5P^AXR-@]2&9R;BTCS->$\RNTP^9T ML89 5OK(PCE7J[!B3>TFDV";NJM'79T?//6M#PZ;Q223@./4"8]?]-9W6.#Y MF&<-RVA(\[!$-[MAT,H@YKY\UDE>1YO.T;M:=00'L+,=T@:)?S>@MN'&CKT; M,@TY\+U\9 -JPI3D,%1)7RDU*9U1=X\>R=*@_JA0MO@7K3A4(CP>]1+0BO;!9!:YN.K?QW9\/R MY;'"-6^T+0T5RT7,9B2J:E<"Z)A:I6>.;L/+;M,='9_45AW5E;5T;J#)3T_ M_NC6EDSK1"\9OS7L8OC)T[Z6=D>T//E3_Z'_IQCG,/2)(D'TH\97X;7!L\%1 MDED2_Y"U<\;\ RW>;]?_M6,H_2&= IR%2^/>M>XG4-T@$5"+4;'3FHY(NSFM MQ@I9B^?J7P_#%LX3QQM;DIZ]$A7\J-ER[_'+7QJ3RDSZ\6AWZRCI!\5:.D?J M\=$>=;KG(O8=>;\PM?!_?+KO7":!'UK@;8XS_A2/3W4^I=!68KMFJQ;H,43+ M8>Z@S>S"'P>8OV^%*XX61_I7*W&>X!09T8/O#=C9T!_FQ/25W%BA/#M"":^R M604@L7M9CBF4 #BHT\M/ -V3:S&,P=JIE816M:U_/OH.2:__81XM-)S&-<&"1RG6.&MP1&GK]D MP%-)-7+=$W@_.@H&DM!)?\16),1&;T?O#1SYZ#^OSZC_>*GOA*&H]'M%DA6/ M NV#1HGDWB2*;P8_#0CQ:>DQ425\'%*&OAPV3+;P*03)-E5#!N6,^K1)7+[[ M\L.3KQ.ZNYB"XCV:Z,M+ZCP,'XI9^.+*U!'ZW]MN/K/H;G@ZIC*A"Y[LK3S& MU7UYG'-P<>-"8WB>XUU9#X8KN2$[.$ORFMR\?\MI3,R/1L&!$>D%;+YVY M(G.B1OM=[I[$IC;TK=Q3&/*PD_"L%G=7#OL'KXP8C +W8+M4U!D57)F"642' M"L:^&9C$K;BQVLEU0QI-7I?[0@8MLY:QKM^WD"W.GLA:YBU6NA*G&M7>;@P-..M#?86&N0 /FPM<$@X M*=0ER!UO!VCVQE\UF8>K^GW[/KTCW^5#]'VFLY1DWTSRAEDRC,N/F9@DJ(]4 M1^SY'!TZ9)=TZD/7VDNQ;!UPXS'-@<:B>> M'Y#;"+P:U!5$(@*&W#U'$ &K6Z5RVKS5ART0-_<,Y]@,!I";^M5,*FN,/@;O M4[?O*)GNCZ, MBV(67(;-IE8MY(,F4%4U X+(Q_&)FQ2V(-%B=6@ "'#::_G MY;8YFZ5=M-4UFBQ^?ZWZ4GO[)(=XHN0%O-/3,1ZA D0VZM(=?#VF4D!6D** MA<3LP3^\ /<,1Y9!YN>DI8J(8/<7CPZAP\]<VPV$(?$/"FL-#WED/"4>+G[]4%#]C_,3\;>%L^ M7D=1FZF9%ZAH=S<-&4UQ([:?0?FL( @SF*J*5)2OHR#7>1"O(I>VE$UU'8M MP3^4FDCIL4[B2[)GMS2OW[[QT?+;4V5T 6$ (XD/ X@TU#U(AGN"Y9;S-HB@ M\%GO=_%(;?0^!^W0P6G!.-]5WSP?I?VGLEKB'66W E<63GV=? =1YLP.E-E MR,0" NQP5G&WX58"-<^FA;8)D\5%MM7;WRZ?&I^Y\B5P-/*L9X[C(1>?VL>[ M)5Z+**VJ@>A\PCC$7RC%QH2@0N#2A [HX&<(@8ME>\=V.)1\FPZ$_)-7%WM8 M2D[ZUZI$.MH&-.M>Y3C;W+>RT_M4NN%I#2.$$#H06XE75NXAZ@V9L7RZ.L][ M@+\ P4$Z"^/",LMA'9Y>_G14(MR38Y8V-G @-V_.[^PEN\?+ER_TO#Z_3N;* M4!ED[LX,2(0(+$]!(G&L $CD+H.8JMX>F:-([* F/]\^HL_\?13M$/6,&[80T-_JURT(GL?;V*UXHGZE,4;1"$GP3%C0C3?A,J;)-7$9*X&IF]Y8! M-;,768;= Y'M2+G,^_:-=O$O!29WU1T/8/;MH!S8_VWC]*7;D@4^ MDB]#L]^$=56K406Z:/O[Q-,%U,/Z*P55MPL5\M_!5ZBT?U#Q1%5*(.(>2I@@ M#0V0:DCI^*@W.%O&: +#40H.GY,,8=9.'?&<^RJ6=--:X\V8]E9U(R7/F]/& MY?Q8>#P(Z1*^3&8LW9^%WT74D+NP,L=IF,F 3H24!4:E(M: EG/RR^_U(L]8 MM:\:O@/9-SN:V]_C MX91B+/7BN,('[/U^WDD^##6B/V4)8@AR7 M$3P?I/2%\W5/71Z@ NS==./SG&IL!4PR;34DFSI.C3M_6UERY(01VR^_0A"@)BGE*E(7%WDJI;.7L;>@U-)"\7*8?R[R#/\/+QTT_RS#UZR\OF5Q7T";6\/XUR ^CTHJ2C:4P0"VH$_/D)0 MQHEUR9G-;"'L7SPLGB)92 <^?@E3C4[]?'/V/?]PE9)J0L1799DZ))QK?E:V<( MH 3T" GX^?7U!(3$102%2(GU_DB(BHN 08#!80EI0Z(B$E)@&6 M^/,(B/WP#@ _Q"([= C%SOB.24M)'E4^<5%%5T]73-S \:V1Y MX:*5]27HY>LW_K9W<'1R]O+VN>7KYW\[-"S\7D1DU/WX1PF)CY\D)6=DOLC* M?OGJ=4Y^06%1<4EIV8>:VCI,/?;3YX:6UK;VCLZO7=W#(Z-CX\2)R2GR_/KQ!YSHF-]:\\%BL*E%V4Y"8 F!#,2B2U1XT%1MQS 7(M6 /)ZEJ5*"<#-< MSMM*AV]9?T8[L#_<)>HY9RR4""?#\U=G+\0<('*8EAD)4NO$LD*EG?K=B^&H MD(D!>FL;1%0/6D=(=%:<;A6_\])]M-G&D3D:;C[ ?&O?GM[LYN+8=J!%Q]>6 MP[YABE(Z^D>C.6%VQ&3JJ@;.@(9M%=VIR?6:*9@N0?SCHLGE]G[QGM3*$_LZG0?&CBR EK8?R"C+JZNL&Z\) ME[S&S)"]_TO9 G(.@6:ZM!M00S8+8$SO51: ?KU8:?#E>-6.U='PBIJ4 ,@Z MG,&[%;N4HBMGY@4>QY:0NHT*L9?*S=D05OT'I&M8)ZJ&8D-" Y3_\75&,F.Q MH>""/P=W]- MRD\FNT9OU63E4O%TJ$ M:#H??U&TI(K*F& G2NXJC2@V71M$W+10>=EZ-=_5M^YW@S ):3"WM MTAT_81!//_4.8=ZV=\_-+1T3"64!*VCL/VJ&_5?TV:7>R[LIR>V3(@@?S%6+ MGK0MY!+EWBRD5< 0W:%-6;\RH,5-1PF6&Q!+6EH2^16NZ>2EFI%,*<4ISBO, MX+,5 :V&7_MB) MCSC.:Z3#PR$8T]=J6<9CCVXF'/+(>0<^\,M.H?:'N^C14 MVL$1RKV(J0GZ!8 MW-#3FR.TM"P;#XSE(^VT="O8H6LS8@<@"A$S\N=LT.?V=-S_Q:.3W M/D^?>Q:\PCBCMPB7#*S[G9I7>U!2X?^LOXITI*D>\:1%:\WQ\3%OFD,D.L], M[�@ 4(X#1/I(LX*1IH&JVZ4K]]X($D9S*(WVZT$ >T?Q834%:NE7ND@=UI MG;4WWG>DI+AR:O7!=S=7,5.UU.[MC1&OU!D_#VWMM&9R'EOV%;TJ<"R@-9 M0#B(D-W>$VSR&2J*'7FAMVF7BN=C>,V??!(0'H"[YLZR=2>L2"!;B%G&Z&;TNHL(#!E5K5OC,C'2.M'F>Z^5RZ5M1/PQ>FSKST6[N9RM6[$JX'@(4_Q M25=[4I"2&W7:W7_O:HS?"%[Y=O91]\2.6'68QN+/2I-E&78U8>-SD#0[S-^, MT+U3D06=4WII%O%+,%1KS[3U^720D]=4YXDLN]6"HI?) \1XC/J>6#Y4%J](Y\VRZ''QIWN9D4@L( FM-<(";@O++2.EJH9U.VMK ML2-SEXY$5K";M8.LJ).N&TM@*@NHA73V>W;KZ[B]^1,3*T3JB.3#9V[BR[7V#@M MRQ350&>FP:OI;G2N>,_W^SICND\-CY!@V)$3<88O\]^EI'<0]$Q*8K*L/"F< MR-3]$*)#*X$WQBX2)C6)XSW8R&N$?'1X<-#/ MBI)OXT)B; ,L8*T<5A>* R MJC+ W)!"@A>"M_3/(OGJ-1J'NC3_J1QX__W*AZ@.WX2>JB15J[=Y&0Y0Y(79 M>H/6LQ6;_'8RRU_;(0%-6\W=ABS X>2\F>MNPB;:A9F'U';>_XM6?L;URL=Y M&:EQXT^.Y,(O7[*L@Z-W9?<^J/S^Q"*)F7VU1SA8R/KJRM+L[_TN:-B#X82_=S:[1<^S M@#9!7H_(7W4RQJYVT4IQECH9W66C;SE7'@XXK_5);O72[ST/VG)SN5P]&JBT M(Z'TCPW68!OG7+._F[9EA:-TW)1D#WVBSO-"=O%O^1CXEB1LN MIF83/*?*WSEZ"02#P>>DS2U<@U(.3N\;#U.],42])NU5G5;G2HTDLP0)@Q7X MZ9(6S12"N)OW&')&P>O95-/D1?C>+:C2P4[E2"NJ&MSV!@ZG'P])GW]L]PA[ M8#9Q.*:(O#UUC5:;/.D47*.E \H-I53+].BG#VY%W7+\+IA9EH\M:2PI\$(J M($=RQ>WX*/>%XTW,J]&>T?=R;<(2CPOPG!*YV\F=,M^ GE0B*R\]JFLDB%-H M>IC5 JGD*5Y)8=FS73>- X^%_"P8;T2Q'_3AN6FG>R."_?O*X%86-JD7'Q5= M6I4$66RWG^R IX[G"5$3LXI*QV*<(O8:WGIZ.%H NS) M9LV3!L?DS_7>;V^/8PIN[:BB$_RPT3V]JZ7YR3M>OWO[+%MVSG#Y4/V2_J?70:[KI5(AY9^W*[*6FP@ M=OX6FG"U011/46:4FE*3]?"9GL=?>83$M8&(GTXT:22/IY0VSY3+XN_M;:#> M#R27))5)5&U*&&/E@QIOO.S3:0\*1SV%B(Z2EIVOR /#/\AH#"\',2'V*O>T MN2OD_C)>)D9T$"_7NYOH,ZZWD^2/07S'7[-S(TQSKYMVH2_D-ZK= BO;#A6 M>4Q'[^]B[QWL1L[3 M^X<2>(Z'VL?:?\W_@BBB).$"LB@)(,(HA@D6! H_<%W?"1$5].+^+XP'V ^Q M YV$1O(QUX-Q' HH7(/?7SS_AU\][29)\DOUKYM'B_30 M@[)9]Y?_\]N'S_2!/V*8KHH2KZCJH$C_4E2__)!17%:HGY0+''U"_0VVCT'U M*RB!\=V?OQ?LA__X)P!J./)LR3]Q =2?7SY='^TR^44]\5YFK'/ M)<[+#YCPI92^:JU\?N+__D.1/CXM>?N[AYR+P\TN\WRG525EHJ1T0R7E/Q_K M[)I^M"5C'Z8?K8E[)QF"CR]PIYNS1:X_J'#G!9['MIB/R4OWB@_RIZ48UU$.F53\-=7=$Y=]+OF*\9LN= MID'*_OT'^=-B7;[ M7? 5_/*Y[:IJS["Q'PS4*H],SYP7V3JGVX7M<7EHM9(+E5K:XE]6^)$73[AY M08JM=@&U)O]1"0RZ$H-:9/"C%+KXZ=]^V:IJ \OE]# N7Q=!\+46^?\]"F5& M=X1;JBU$EN_#DU%S>+9SM)":5=@(7)!*N:8Q"93G_\*79='^!JK?5!-5O[]? M7GP;EWFK%<[IB6%JGOB%9G(W]53"G1$3>?8X4/TR&_A9U0,AQ?H!9#GCN=Q# M'U#QQ>=_Q07/<\[>/N#\GA>WV3*ESW>2B]Y(\?^^8 RQ)/%]&-+(A2CV(D@\ M1"!WW AX=$HH29DT]_=W)BFE1:\S8JR,..5$\#JD8H]N$9FE"U2M:07H)85 M?&W^5$*#2FJ+I*('CR5&.='9I'2BI_@^EVB^948DG++%+7[^O9![3W7:5J?+ MJ[2@RZQ8YUSNBOAUR1^+$Q^\9BLS^N*EM.!; 3KR@JW X*L2&50R6_C>#=$Y M\,$7G/Y\GWW[1;;4?.N4;3]QW?8G^<8-E6T_@!7.$[Z(@A)Z7R!4R(@XD/!;0^9\/+=>L++'[83_GB+DTSQDPJU MD_KT@\-VO9>4YFO./J28I,NT3'GQ=BU7QE6YB$,2.B'S(.8(0>0E"2341M<*3"//[Q:ACI 7H!'3 MWI[V)!*6MK/'^YET)WM2W?U-[.D7S"BAR,O%)SG,O+'V! GRG00%,,;,@2CP MY=Q/$(8NBJB<_(A@D>@0P%Z[]\U("\J]>DA1\@0003D >>W&LS@6$B? H]WPFY@USL M!<)D<>[M;6XSMA46X!4#;"NNV4+=#[#>8FT-MI&G]PYB'4E!(ZJ]15L+$4L+ M=W]?DR[>6FKO+^!Z+PVCC^L5S26/\RM>_WF]NGGBN23YU?U;_)26>'E)BC+' MM%QP3 /$A0=YQ.4Z'\8NC&.>0(IBS_-=@I@3F7")?M=S(Y:W#XJ^"Y"N "X* M7A;5?%EV=[DK7H), "X$I_+?Y8^8_O2@$1U\;86W:#EL^__;V\S5/*WSZL[F_E=-%@J].MS(V=I+1,5(D- M:OK2XR -$$_?4]C#;V2.T83N0EUB4"M&#'UX!MU1G&AZLNL)/16[-Q.:;PP] M-"TKYR^[IAH&N>Y:R!^7HQZFS4!QPJ-*#QMJYZD1W$Q^M M])1_>;K2?&\8U7Q^P#E7+M[L;?:H3FR53])EGJN%1)WCWCQO'[G%S^I7EW_@ MG,GS79I7#]<^J@M?GB42Y";0#1)Y_D*"RO,7"6"04$((=H7C,",W1EN2S8V\ M:F>][*DZ:@'Y^52[R+4\&LC>'T&NO_NQ/XAZ'/PU%2DF2WY9&8HNE1$HY^QRU;V/D_^V?I2: MX$+9^-[)1[[AI7RU6(1>X#"*'>@+N;5')%0V-RJ)WXD\$B;>V M$"@)S8A^Y.'48__Y#-+(2T*K*.AH>@&VNH*NLJ#6%K3J5C;7CL*@T?@"*)VK M?^UH;6^EF&9T+"T?(PL[Z9HR#?#["\U$O1JZ8#P5=/$.YZMT=:_<-ZNE3FZ9 M4JKNB-+E6AYHWMU^WEP+T"0B#L44.DA=W6 <0!Q$1,7B!I@EKL\=+7.&8;]S M6P\^\A*D*YH]JM3+U?KC>G4,^S^;-C>- M;\XP'3>^.P-?/\-V]*;GD%,TIYPW^Z>2#UJ*Q^C+W2J@:_55V7E[ADK_':?X[ M7JZYKCO"D=?G1II*,%!)!G#E 56)#)3,^KX'QZ Z[71@ :5).&R+"M@B9L>Q MX 0$@SP*CK4YF2O!":6Z/@2G'AUI5W:,2]2YOWR^7LF]875R*&[*!Y[?/>#5 M37U7]3%;?>.%ROZSKJ($6$Q0X/H)1"SV(/(CIPZM2BC'<1PG/@G#Q=->]J7S M=P:VY#>9:OM:C&ATY/?I2NW? <'+*@KYQW15VP*,,Z%,]B7X,9*#3CF,&)&? M@X@HC(GPH B83V(=U.K$]',9'%NL"#-P- ME7)KI?JY$97?S4.VE"\7M10;:ZT?^22($@^& OD0N2Z'29)0Z'//16Z0,)_Z M9BG8-'J=VX%H([0Z#'7%_A\M_Y@:S\AOQT@6$,PT'D#OE M*+)-:1A@SV-(GN5Y'*M;UC'WKLUFJE!/.#V)W_4'=JOE8[C M),T<"7];NT++TDV[?QP'VA<[S9&Z&2%E2YUC="' MFA[GD_)E%P*CQ"][KYZ[HU7G0/6_CG.R[/;S0Y:7=SQ_O*YLAO7F>GDDH()>;68A$&,-$X!CZ29S(DW1$ V)T@#Y?I+D1V>?UXZ/*;BHW.=5INZ-/ M-3L[B@S=C@X>/=,=Z!1C,C(S*O$O3H[$1#O*<_&TOHD<+- K[1O/!?#X5O'L ME@?$=$C&+_.4RC-N91']LDJK3ML\]-M?-GDDA>LG0OB20'CD:;F5#>E\;C3[Z?.7 OPK?GSZ*[B2/QJ$'9BBWD^:8V,Y_L:QD;R^ M30&5F'6T05NSHOL/)RO?G(^W0:S'B+A/%/#1P;^H8%Y7,-]:'K*HSM#G_OV"H^\G*1$,J"D'J0 MA"&5NW'7AS@0"+* ,L(B+$B@M2!H]C>W-6##4$V87XF_=_,R#BM(= QKO;VS M101'9OX->+6H0,JZF[I=BFN_%-$)7"S7(CK6VZL4(SJA^K%J1*=>,P](^&WU ME*K2+W?I(V?OLURY'/V.E^^7^%XW**&GB;F1Q&\?;Z^[I8 9%,_2U.UE$@X9RW:@&G<<'.LML"T%5 MOH7M_CL(O=#'%,$ ,ZXJ-KE0Y1R#V/>)$SF^2"+'R$?F<#]SXXE;[5/D*0#U M=@H68!EY_G=KM]4BCE#X] 0,MAQ>CO0RK9]+OZHOW%M./#[ X'2Y9FEYO:J: MK1R,#3)8''MW1A]L)2+HR#@L+\51E PL$S;0FL@$\0(U2\:%4Q#T6A&.OCR= MN>"4_#MV@9,/#UNCWU45!=)O?',*^(1+KMP:5E2>!:JNWK,T;3)4+R(O<-PH M=* ;8@Q1$ 80AT$$29(XS/4I]>)PT2TM?W*9,I1 Z_O>K4T_\KHN]TP\O5\! M";K40MD*2OG/J;KMJ[$I_ =Y?75]; MS*5^)G26-A:FO4^ZX1@(S?Y&9&@S@VM/9NM56=SB9W71UM9)]"AQ.:4^#(5* M:E956H\#*IDM3BB-G9";Q10=[F9NAY)62O!4BVE<=?(0E'J4=#Y 8^_V6FP: M"<9WXH)>"NGV=P_!J?>Y+< TLBS M?X//1L01C!,G8+!$ ,=ZF90!3JBZ3P&G'C>_E5 WJTV$H K5N/R>%KJW$0=> MG=MT[H@(KKBJ3-"DEZWB4OZB?_%P"*;3%PYG(C3R7.X'!WQ5XEJZ6N@!8M"5 MPJ'V)KM*Z%&F>X70]]BPM?ICMLK:\FWUH:"MD"HX0G'D>C 1C@>1&S*8$#^$ M@4N0B$,WH(&S^,9SDNFNUT?[,OF NSV.]QW7240:9X0?FTKQ/U7E(5D"8P#A&%$50P)Y@E&\AB4E7@Y(;K;_L;#]D[U ;+Q$=;; M(%G!;61:[)-T$@I+VZ3C_4RZ43JI[OY6Z?0+X]F&+\OW M7+:(ERK[PEJ.X_/.PPO*'(\J [$@@0L1]S!,L$L@88+*I8,'Q#,Z7%F0:6X[ MMR\_?_X9%*VH0-2R=UW.B5CM";< M$QJH3TDT.Z.U)H1##-FZ30\V"R=UXL A&$W&,1Q#B, M(&*^W-H))#?1Q!4A91'V7*/J3SU]S8UC.Z)6KN^T*ZRQW>LHPMJV+QNXC6__ MVH'LK19D0RQ@I\"P9P4[VM/4EK!3*A^PAIU\Q=PB=KTJ4OGD78Y5]M(J E@V M>)MG](-F%5W-5F;T63?2@D9-*:,[6E2/:!YLE=0UQ&F0ITFE_,LN1 M@;)=2Y+):Q.GVV[27;[[+K=T::&NI9I,NM3W8B?T!,1<6:02)X28"A4^*80@ MPA64NE8KH)A*.+?%^&9=RN-.G3%9S3J^%7A39G?Z#,I'QU=O47_541N9,RUD M1-[D/.[H.:.LQZ<&X;6S&Q^5[\^1Q?@4O-:R%9_L:,"UX7K)78<$KNS^+G]< ME,Q M[#+Q<)/3W2?VJK1SI=C_Y,!H9TD)]_>Y\@J6+*&RMWWCJS7?'G82ZB<^=1FD M3*AB=@&!V$,)Q '&E/I1S!$V"G<^T>'<>&!77G"CTBA6$NL=AX:!KK>_L@GE MR#RQAV)FB*)YZ+,F-+9BGT]U-VWPLZ;R+Z*?==\;$ 7UJS+7*,O_]8HV7G&8 M)8E#? (YX@(B-V(PQBB"/$B$X#ATG9AJ9]9YV?[I^+6738<<5[X\(.O#9=1-AQF7=BP7H> M&[8Q^J!RFO.;UHG@ Y?GJC8;Q'.;!?UJS?^+X_Q]^HTO @^'2/$72@(&4110 MB)%P8$P<)PD\R@//R.9E*L#<^$Y^1['9ML@8C*5-2Z%%72 M7VR2QCQ?J&()A(-;G+(+H%0 2@=[.ZFAZ%G:61EW/^E.:R@X^SNOP>T,V(D= MZNLRY_A&5#^RS^I;7%!,DBBA"":N(]F,22+#(H@AQ1$->1(Z/M7*.:O?Y=SX MJXFP 6[L=*CVI6D945W0]J(N#(7G,JK"\2*M&TGS MKN?&1[5LH*Q$5D<"T@AME"G>!'N-\^IHB(Z^4VKD;J\F"U!+KLZLK>R@@;R6 M?C28C=+QCP3W9,GX6]CS%O:7WS-8UK _55K8R\0_ +H3>?A-6IPR"_\ 3?=R M\ ]I8^6SQ9G;FK&I1ETEE<:U3BJRLE)* M_@#*!PX>MZIM3$WF:?XM#:C&HC/I,(V\$%4CI)0!4AO0J -:?>0/H*/1QJ"Z M4[-U4 K6\P?*8-F:=, F6LKL3"U;JYLUA'M7O/-[F6X5M(;(SLIHK]5A=IP[ M^=J-Z#C?5NF) H*$XS(?AAY'$/D1A@0C#"E!<8*3F'B.4YTUIGS *[#SDIDUYS#T>I:;LP$=>Q4Z&TMK.:2T(+-D MQSG^:\J1'W)'MZ4&OX MDWP/8)7KP-@L? 1Q/28Y'\>1J>1V![ZZLF$EH\6*%KT8V"IH<;B3:>M9]"KZ MHIQ%_]/#Z&&3F^/0M440!SXAA*FDL9(DD$=@3'$ '2P2A_HHB;S(A"3Z.IL; M56Q3W9@FT.B%5(\%; $U,A=TT@%UJER-D XDE:NCM:E*"T%%ZGR:TWAE, M%KDZ]USQ^L_KE]3$]<0: YPV:!F)DZ=\AZG>57$\;(HUH]M MB/X35U6.K^0)@O$5JU(.1BB, \X8Y(&*+8DPEUQ(.8Q\DB 2"1:X1I4!1Y=X M=A3:R :>4[[4O+*=;GCU*'=6@S8R25O(K**T;DJD=O16B59JS<'FF_C4ET9T MNEPKIL/TVKE7M.7]<^1B,87?6FX6XX[/B66L[A^**H%8Q^_93Y";1(& B!"Y MOL3RU(Y#'$//I1Y.>$AC9I3?H:>ON:T,M9!#8A0/0ZG'Y98 &IF%VRB>6D[P MM984C').UT#$:C3AX9Y>(7"P5^7#,8+]KPRCA\:E1SF8WZ]214+[7[:(?,_U M0@*IH!Y$/G4@8;$/$7,12GC@.X*8D,3)'N=&%6VVDH[$9KQQ&F,]]K"*W,@< MLDGQ,B9Y: -BB4).]S7:?XZ>'E%ZE19FG9*WZN,H> M<;I:.)$7(AQAR"(40_D3@C$.&%3N>:[<@W /&7DG]'4V-RK9R@JZPIK122^Z M>DQB"[.12>0(7.!K+:E%)M$!Q!*)]'8U*7_H*+U/'5KO#'#]?;,NTI7BH> &V2H*NEJ 6'[1Z JGHCH]PH^I%X[]U.9>A-G BGL&03^1: M_)I#;^9V//*8]#HCC]7W="[*(Z.WX[@\=E\#;97;MIL,/-OP LXY1A&!84@C MB+@K3PTQ)=!W$H2PFZ @,HI#/][5W%;C32XBTP@<#50UK996L!K;:+D51(-6P;+XQU-:Z\\J? +<^7I-P9FK&Y<8IJ281O?I:; XQN^XB(M M%\+Q&$&NJH+K)I(LF%/GK2:A<&,2Q0E)?*.\U5K=SHTX&FD-TU/K(:Q''/9Q M&YE$-BY7;2W#CLMB(S3XL1';8D57,YQLY:W6ZW3:[-5&0+S(86WV]M B::7 MVJ<:YS>YJES(6767>\OSZK9WP5SBABS ,/%=9>7D'HP3ZD.7$N*%8422P,B7 M4:_;N5'01NHZ7N("/.$6=E'>&2R MVH+[N097RBP_95!+W?C 2+EK;QF;\18F0%F+O]#J=.)X#!,@7L9G&+UM@ZVJ MEA>8^'(3A"/H)8) %# $Y:\2Z 8XC!T_1ARQX=14]3%['OH7YV?'<;=T]%<0 M7#B.H_[7U%D#>%T^9+DZ#_\5;'Z9RB.O;$6%06;;LFWGL%8])D,HRACIJ?FH M$O "7%>8C<4_.RB,0C9U#Z_(+#LJ]M/([J/#.*.U#55&GZ*Z'OZPJ4[#0XX] MD;C0$YX+$0LXQ#B(84"Q[[M$")(8N23W=38W%MD88CO"GE$)J!=G/4*PA=Y4 MEQ?&P!F3@PXBEEBBMZM)Z4)'Z7W>T'IGXL"(.LG@]:HH\^IBI:A,RW-44 M,OR8K;[Q0NZ1_L;3^P?YY^4W>=*[Y[_*ILLKN7G:.-5^DD>+]UFN6EVPD'"' MA B*Q'$@$A1#[# "X\#W2.@PCP;3A%&,H]_<:+*5'33"@TIZH,3O>N?_^"^_ M##GSS0S\L8,X7O^3&7EML!#RT225[8#4S4NR*;6[0>H":'ZB8UP?S/1+>.VH MDI&T^W/$H(P[M-8B5D865A7/Y%_E2DK*K9H'8U3;CG^W2% M5U0^<5GG:4EYL0B93Y@?$A@P3U7O<@*82,:"5(Z_*VC D.\O5JHJ(F>:UI!S MY-'BY:3FY:Y4(Q[JFP)$55H[NM%(_;A5R=#^<=:(:5I*1A^%B6PJS4JGT-]J M G94Z18$VV@#MNI8M+S80-66C>8L6::UYMB [87=QTJCPSCW'@3@@#@S\)(K"1& :&H4*'>EG;@>>1BPK5UK' MH-6C/0N C4QHK83;BZD+T$AICZ=.P&")@8[U,BFWG%!UGS5./3[ M28,<,FDTPWHC0*MF M4W;B58?5P#W_-8=W(K_\UQEF,X_\L8:AUQ7?>J?3^>"/A=>.\_UHG9C7G[SE MV5U6XJ42Y/*QU"TRN??:W!;%VW\G)5 MF5N?U-R_4X$X"WF(I@D-Y&F:J[AY#ZL+3#>$+HD]QW4B-_*U2MN8=CRWR=W* MK5;-5O(JI719Q;IMA =?*_$-G3*TAT/SWF\$D,=FBD;0BP94; 2J^7V8(4*V M+JITNYWV!LD0C!=7.Z;O#\SOD67LCW2YE.U>RVWVZC[=1 KN_[U.++*@'HTX MCD(H<"3/]/(<#V/FQ)#%<8 0C]T &]4/,)9@;BRVE=(H^GKX".CQU:BXCDQ< MK>P58[W ]^+0KYKD1*,F*1H,J:U\(\;]3YN$9"@\+S*3#&YH& E>4EI5?/K$ M*4^_*5;]R,LFW'$1<\&1$U%($U6'4(@($AQXD-.(!#1)/*+2CJA=I![?]75F M1&V;+L>;AZVL(-\(>P%67//@I06O'IG9 FUDWMK@]:F#%Q:ERLZP7&9_8#F/ MZ@O@G+.T!!^R8AOB;(^G=-"R1$F]74W*/CI*[Q.-UCOG;:RZ#H8$AP'B#H,^ M;E?RK$A(T4AJ>Y YA:;8)FJ?# MI"DX@SGD>>O!D3VK"RG\!ADG#W8X&06 MVCYUNF;:WN<&EEO-JYJNSU6HW=OL\3%;51? @I?5P6 ,I+&+ M A41+@26.T[D8TA\%$(WPC@(>"1"3!NDWZTTW:(MXMSV.1[*[ZJH[C$AUMN( M6@%M].6L(8 FZ+L6\Z+V>K#H>WP2"UM%@(_V,VTAX%/JOB@&?/*%B8,YFYB0 MFVV:A-I]8>&0Q/5=N5:&;N*J6L(!C/VJUI\\TB8(.90'YD1N7<[_ZQ< ^R,; MB=@/(KDZAS[&:F1]F"34@SR@B$5AD/@A,5TX9C"N?YX%Q_Z0ZBU4KSI((R]P M%@)4-R&H'3U;Y[\91):>&H37C@T]*M^?([KS%+S6XC-/=F2V V \;0_1GY\? M2;9JK6TTM71Z'/P2 MKG[N/ N$B6Q4)_37IJBCNO;8G^0[-:O('[9D\K*E24C@J +MY#W^@+F1^&.V MNN791YY=?KNOG QIN<;+Y?,M3IF!D^Z)9N8VYZ2X4'FI?I3_:],R[*ZWC?Q M*6#LS'L*U--V98MXCCQ][4)I9&S6!&F0W?E4VY.9H#65[%JC=5\9Z(O2^@FH M<.#*2T Y"?#B9K4)_MW>5A>5*7Q;?(X0X7!.'(A)0B!R!8?8C2/(HX@(PGQ! M?:-4M><(,S=2VC@;9^*X,X:JJE&'5JM+'+I<,WD$2-4L>^'8 3X:^\&<,[1Z MI[>I!FQDUMOF/N@ZTAP=M>:2;1RG/QN0VG*V.4>4:9UQ+(#VPEG'1ILC64Z+ M$P>Y*FU.<;VJP[SV_3$+J,8X@DG4-"U"5D3$00 MB"AB?F UQ9T]V>=&^97DEK(Y3/D)6++4O<[ SL"&5^@:\6H$U )?8W @G5R+ M ZB F-#$9W_TIC+^691\7F9!^T-B;# <082!B8.$X&JGS#>U.3[ADM<)C-9R M*;YY:I(7%IK5*;=VJ..2N&[LN)!P%$ 6"0AQZ\KCH.5C0) Q= M9N1N8TFNN2UE4AMU*\S!CXS7/_T$9/OKII>7 ME[E!%RZ/A1OZ@61WPN1A)L+RI]!1A9O#) I<%B"CB(>)Y9_;*M *#'&S.Q4J MPW%=A6ESL*DR2-7J@OLI3T"6OYUI_!5&_")F! ZF%=[/BX/ \=Q)@X1 MIM+/ZUPTSM#8=J88*L:YR6#>*MXEF5K=O_'N4>YRQ3[*$3CRSW?RIT*N^/66 M0,7+^(0BN9IZT.<$043" "812F#B(R=P,0I(J!6!-)Z(\"4;SC)PWM@&WGAW'FH"OE$?'-L#',^Y8 M[VG8$O*1E_5A4=US+8(H%LAW,703Y;$7QCZ,0R^ 4,HPM@)L&)__3P4.ZT; M$?<$B2>D<'(SJJ0S(]Y=R'P717&$.*0^$1#A*(%8" (])*&,$R\4(5K(]9]D MNDOF8-"ZOE@VKM+RB''QJV%KQ/5VG) M/\@%YT5*I,O'+"_3?U2GH:8^^J5*.?-?'.?OY0L+R8#8%\*')$$$(N&'D'@L MA)(% TF,(F+<,YG/9\@RM]E_)_>)O$K08S;[SQD./:Z8".21F:76 E9JO,C: M=@&4]+0R,G54:C,F*76 TL<>&UD U1)WG2/)I$QG ;)]7K31Y# 6;0OII+QH M\X^%7*#$BPET1P%*/V!GB<'[I!:P^U56M!E M5JSE9['Q4J 8(^%%JOR]I#HTXZNXW-\+W8#6*LG-:B&*(HIG(/X7LP\CTO%%2X MR#/RRHIU8$M)J CNR&K#-X<#0I:0K(Q^:K@V@W6E1W)%T])LF8?3:L MMDAOL!S3,N*Y<+V@R[,;-(]Y?ON@+D38+>?YKWFV?GJ_VDY&S7CGGB;F1G&- MJ$#)"BIA+\#[+"M76:EI43Z%63^!681K9'KJ0PI\M4H_FJ ,"EWN:W>RL&4- MY;HARSJ/#YCHV6>^K.QWOU4)R_A'.?K:4_S0R[.;W-GC$UX]@U94T,@*E+ & ML_L@4!KS^ER,QI[1@^ QF\5]$ R;OP=;G&[F]BFT,V=['QQ0W?>*"RZW >P. M?Z^-K8W+^>K^@XHGZ1AD%LQU6!(3"GWJ4HB(N@'&H0\CCW/D!$'@T$2[;J]^ MOW.;_AM!P;**O3&VE9KBWD\)(Z(Y,E&T0E=!,K788 MN)3CX,#:X!B5OQP%Y MHF*V&[!+"3:NP54> MV8=L*=\O5/&X\GECKT6QPSR&0Q@)$4/$$P))+ +H^:'KA1X1?JA%]*8=SXWI M/UQ?OKG^<'UW_>XSN/QX!3[?W;S]7_]Y\^'JW:?/__K/L>=&?P7O_O>7Z[O_ M&GQ)UC\0QE=GUN"=[D)M4W^R?![%B&Z*COT[M_YN7^LF3@N,GOLYO?>M^S5] M2%?\NN2/Q0*1A"<,<8@IC2!B.)#;4=3N?&4+V>- 7X MJ@0'E>2F]WDZ(Z!I1+>,Z]CV<@N0VG1!>H'1^+Y&VR[GXE3T @0#[Z&7[P[, M;?'XM,R>.:]8[S=>9<\FC"'7\V+H(X=!>0B.8.S%&(HH=H,P(H0DV"A/QO\;[EC6B M08$JD0>8(S9 ]3 JC4 MI(DM6)6$8"/B^>@,,$L-1VEJ$U3U!0'9EU^>WG->-(MP@@1A"7$@CY'164Q*!AH(3F]63F-A0%UG8#(19RELUD] M<'LF\2-*]_+3_CO3$=,1:7<8Z=@SY^;(.)S;8V>_UQX_U.FCS=&]ER,;)]CC MKLN? 5AV9LCN[DJ3^6XND"])W-+[8Y[,=,C#[2$%C/>V%'NE=*>F$5 MVN,9+^QV,W U.'X[Y@H<)2YR)9,32>PHX# 6S(58"6K(3^?>^GXI[AFK 63S%>6>4K6945[909N<3Y6[M7)+ACGE]D[L>)\F M$W2_Y_'FZINZ&/P%(/P^7:V4&W8FP#/'AEFG^N%FS/.0X X,"7$@$O(_) H3 MR#TG%D[B8DYY _>[E>829!GLMM\)H.8K-@;(VIM=.["-O].MY 1_2$%!*^G% M)A;CN*EAR"[W-"3VMK@]?4V]OSVM]H'-K<9+Y]ZYO,.YHJ)"+A*M^2^EERMV ME2[7I0I2V#'+G M;%75G)-LH_ZVKB\JU5\K32JO]T87T,FT*=6M-V=#KUO,QL_T6F6T49GP^J35 M88OUQ8$QF>:.9!">UN]"S*1XI3N/05 =O]L8UMPP=OW$E^I0?2OWE-UD&W59 M]N)&='ZW0(DOMVP^@SX+Y7[-\0*(.1:0(1&3D,1)&(4FC&K0]]Q8]+T4D=6T M2=7:IRSXZIQB1HTFX.O1X4B0CDR!C=2@$KN;!.@"-)(K9 M]#PIKPV 9)_+AC0QC+^N5W*ZK_#R$__&5VO^F>??4LJO/WUN/+XHB;@7RI.E M[T3R2,\2!^*$1Y 1)OS8B1!E1JGA3_0W-Y[Z\O/GGT$K,VB$EKL^9KB).P6S M'CM9!&]D1GH!62,K^%%*^],(<1.:T%CBGE.]3%XD!#*H&">AS'V?8<:E0RV*=S<&*N1#CSU6_7' M'S3-\^9_GSY?>TT$T%=_#EN1'I1DC02JE9HF?^M_\%S+__6*<7$\C'[/^5"$?>8BGWH#RXX:R3$W0NA&3T@6?:Q,+E\*+M9+H-2IC"PO MLDH,-?:;#9FIL7^T@9C0V+_5X7A&CTDL_8/ M&[I-Y/BE2S]@Z Z;ND?UMS M'"%"<%K>B'??:95<]Y.<_S>KM[AX4/]3SL[?\%+="WZ2>ZP\57D\U3]S)F5DD0X)!$2624DN3559H;Q]>(*'8136Y]VN;6YPU(0(K.0?VS M(;N_/MZZ25A>7= 9K3G;;Z*% R@\@#S-*QTOJO^"CJH78(M"\XBZ?M[[Y>X; M&WA BT^=,;VYN-Y"!+886V2QGI%D ])GW.55 M*N[GRI?VRVI=<";[>??]*YK:*UN.!?\>/37T$C&1 MEZ-6[#H0_ (T8%>I5ANHIP+9(!W(6&!/E"O$)NAF*46& ->;;\2HP>F2D0S1 M<@\>>V.'U?JK;Z__QM/[!RGCY3=YT+OG M[;_?RB,C7V _\1SJJ]62R*,8C^3B28( ^I['(^XB''EF^6,F%7]N2^9N3#>3 M'P7."^5A5,=WFX9W3_LI6%I"7VV 9["$%F?$E5^ %@C0(+%Y"E183+A>CC*& M4ZV7=H6?UWHYRL 8KY?C2&'N6S6@N.:,2VJ:53O!0)T93;M/5B-9*U0=8\7*;V3^M8Y"W%0+-]FP'H=7;69T+V,B3]4"E MRHLJ:EN>[Y6ML-D,+9?9'RK/A+W=2A\NEO84![N8=.7O4W)_?>Y]UGP5E>?6 M^VS%/W&:R>59'G>9R8)Z^.T_]]IZ!)'3R^SY8(P\B1L!02NA\J=@Z;>4K24/ MVEN&^W$8M"(?:7*RQ;E?I>XZ?>+)84OVKUG&_DB7RP41/D_""$,<*H&-GA6JE,EMZ-Q EPJ>.B#%D*" 0 M!7X"X\1Q(4NH<'V?NPYF)C8M(Y F)+4S88I<[L7<2:#GO/EV]L V+ 6,PQ8A"K28@(PY"$W*QX"QLB+Z,EY9[S%W5?2TK9VT^RD6]E]9?:WKR_^?=B*>)NK MTNWEL\JZ7RH'AO]>IT_*$K4-]DBX*SSDA3!,5')\'$6B%G)O0TXA! MQ)" L2O'A?M.S*A+.0N-7#3L#L@DT5&=X3@,>G6LMHZ\'MW:Q7-D(FZ%O:B* MNY2[*(X:TZ0/DR4JU^AP4I+7!V"?_@W>')JA7!*<:K"^OM_F(:Q"BQ%"<1!% M'$:)2I'AR'-F[ <($APX<2A/#J%IP92>WN;&/8T/SU9(TWSC?8-ULJ&Y\>968" E_O';3V K MM/XEUVG\3M]W685N9%[K0TV>%6V>$HV@&70;=KKUR2[&M!7MWI'IOS0T6RM5 M44[\BM=_7J\N*+#PW00EV7$ABYD'D.PY,F*.B4A/.141)8)9F M6J?3V7%)+2'@WY6CGVF0CQ;,>KLIV^"-S":MN.#'5N"?E"MO"V=':)NI6_4A MLI:_5:/+B9.XZH/P,I.KP;L#ZS[QO$Q%*H=2;7RN^%-6I&63NS@6/ A=$<(D MD*2#7!I V89D=L\)DX @[GO8J/+F\;[F1C-=497AF]7"&M8?ZL%6CV0L(38R MM^R#U<@Y0C)H#3QL%1[JZ6G:LD.G57Y1=$CCE8GCH^O0RJ8Z>7'Y#:=+==GQ M/LM_E>^6"X\%21 2#(/*!89'QRI<[GT"E\0P"EC7'Y+5#DT^) M.:^@JC/!MA9NK-O?@/1,VTR0+PO/5]?DBR"B\F!.7)A$0JX849# V TC&!+& M2!(Q$OJ)=DZFD]W-CO=;IXP; ;HBMUD/:E\"S3L)3<3[Z=L^CF.3\"M :)!7 MR2J4$R53ZKH*%5U(>27VSY8R)VE#TYLNZ70KT^5(TM9H)S&2_EL3[_:;L-IJ M%=C$U/Z:9T6QP!%3F1LBR".?0>0Y&"8>36#HD!!QZOFQ;S=_@[F,<^/Z2L0F M1<.T&_J><1QY+V]G=.:_C=\D6*@U[697J+2=P1;^]%"\]NZ]1\(_Q\;]-,36 M]NP:70VXVE8M?UFQ?/E\_YG3=5Y9IB\?2^TK[6,-S(V+I8Q<"JGB<+9R&MQA M'P5*X^[:!D9CWUE7I:T.@M04++5T67T*BV&7U$=;G>YR^I1B.Y?2)Q\VF\J, MIXMWJU+N'C\_XN7RS;I(5URN]0'SH\A%2 4D8HA\ED L0@%=#\D]MR:Q?+.>Q/*'[20^ MUMXDT_>$,NW$/?78Q$>U]SC-J\RYET6Q?JPW!WO9CW[/EK*UI918I7A?$"Z\ M*' $]&+756S 8.Q*7D@BY'@\0D*P:9+6&HL^-Z+92C?1>&'-;B^0$B\Q6H8'PZZTHXX,Z\NKPOJ]^HPQ_'E(6F+K@4),RKSG ;7/HF>V9GYP_R"_A.7M0[;B];7\PO4\Q.. 0>;@ M$"+D>LIO/( ^8<)'E$=!K%53\%#C$Z,HX9!& MA$-$20(3E0@F1IX?T(0*!_N+%;]7J5#TMB4ZW6I]MYLL:MO.1S0@-S*"?".D MA0B/?;3U]B#6$'SM"(\:T4^G$;43X7$$HC$C//:[?/T(CR,@:$5X''O7_&*N MS>EX(][EN3K.;2/7/J0K?EWRQU/&:=UF9C036G&K!%)Y+HD\6Q?+Y]KJLF^M MZ095*F5 I8VEH$H3X 9=66EU,-GME8FZW8LLH_>&K<)5)1S5=,X?Y-C+??EU ME3C[RTK.NV7Z#\[^,UNJTJ._XG3U(2N*FU7G2BU/"U655/YU=5]?F7_DY8VX MP]\77H@98TX,W9 @B)C*=)J($'*?"\P<)Z3$*('&6(+.;6TJE%4!=U?5+G.Y316ZKRIJ*'@)UT] <%U?.TV0^PG;(G 35SQIA 4;:24/ ME^#+$WAO&T&#@!:K2$X4T+)!-&\0Q1M$Y3<)FF_25ER+-D*]<2VG6YDNKD5; MHYVX%OVWSBLG]38KRF+AR^UXB 2!GH]"E55'%:CPY0&.RLU'')/ ,[L/WFE] M;J>NS0=-E71R#YVMH%SK!! Q!T$ ML8<#2$)&F&"8)+%649:I!9\;X]0" ER"NN1'58C#.)1M\N'7V!K.=%!')DLM MM\P3RC-A3/ST*.]&U[]"_P/OMN3**H5;W7]05\AM;L#G[39VP9"' MD1,QR+'G0B0P4>$:+G1)Y(4^"7D2!D:75*=ZG-LN9",P6%8^$LMM L4S#D&G M@=>\$K )Y]BV_0V2E; 7F]2AS^,6I\F&NDH]\6:5E\>GSER:])2$"N%VD\CY S5PL42>?3W-2EQ M:*F]3QIZ+PT,4=UF*U+;)K*_L]KK^W+%#DESJ=P\VOQ&V]3_A#(G\52IQ(#( M#0ZC!!+$7,B8'Z(PH#1FCE%0ZHC"SHVN;C]_N0"?ZO]OPWER&;T/ZR.1EO#R5R$/?Y50WH0=*] *VVH]8>G&)@;$65CBGJM'&D$X#^ M(G)TBC[-G:#WZMM?K?E=]GM:1:)FJQOQG]DC?ZM=NX/KB-@<4ZNH9(Q9YEFE>K_M9?_I)(1L6T7+ H#E'L"^A3 MSX$H<1F,'1Y (F@UE53:SQ\H8L MT_NJN_>R![Q4 >^_X5)YV3ZWV\:]4Y\O L:BQ(-"!(D\US,$$^JX,!*1Z\4^ M"H+8UW+ .%>2N='9Y_7C(ZZCVSYQ5912&>-O9>L/ZF9##NUC6H=(U/7EBS)] M5.ZZVT?NTD?YBN95^MGC>,*38LK1&9D3.WJ K2(7H%:E3N[1*C/*B=L:F'T4 M*COIT*?\VY8ZS^]_FNME6S!M[HNM-3@XQ8#<:6YJCJL$!A6SJRKWRKD5,\14 M_38A_^-[JL!W!)U _J:&U'6HH*-K* 5UCBEP%%T];9XEC ; MF;Z.PB4W=E)2BYLZ#3SL90LXVM/420).J7P@-\#)5X;QQ3LAZG#9NHL[_%VE M8U.GV!5-EVG5C?SEVYPS=0'$"TE@]&$1)"*A*'2@'ZMZD([P(,$!A:%@ 4T$ M$G++9I:D9)@@6G-FXEBE6K)JQ\7X-[[,GJHI1"O)S?AFX.CH4=&(B$^4BKA5 M #1\):6MDF*"724NJG^H]:@N12I%+I0W(+7JH'(>HI9X;J 0DU+@>4#ML^.9 MK0TCSLY%6R'/S1^S%=[^YD[^5,@=H'+Q:SPW:(P%[/Z]]N@ME4?OSDMF3&HZ M7'H4.N(@C'Y /1=_\/4J4R8'BYO!@7!:(D[3WB=ES('0[%/ET&:&<>0'7A2< M'W$_;(_!>S8BP1$2R!/0Q3Z"*/$3B#F/84A#G# G\%AH5/YW@ QSX\IN+;WW MZU+EI_HM7:6/Z\?6[:.H"ZV /8]<0]?#(<.EQY,C#\+(7%E+?[&/[HZ_!4@M\>40"2;ES#,@VN?-EA3L>)'OA&SX?'MK<\GD MD42JA9?R#"NR_+&VLGWBR^J>1K)*[:/7*'^6)^;$GY#>RO"G^3!&7F.Z:_S8 MQ23E;X""!FRP:2J/3.CZ^3H#/8YOZ,2ZO*;SZ.L,VPGOTE<2:D#6BK;$EQ26 MI*M*UML\^Y86U1+060&N5W)9P,LF [#<<52FK:S&*8JV#T]B"SFTUWB;+9MUDV7SC+/&MXD;) MRZQ-#I/6YF:5B117=1P,@HVAWMW4!&EW! M5EFPU?9B)^7D)D%0I?),QMT@Y\1,QG^B'!.O_AV899.88'!ZLT>,V?]TV2(F M0'$G.\04_0UT$L?%P^6*J3]4)@JYD"E;X6VV3.GS]J"&(S?PD1/ @# !D1\F M, EP -W0B41"4) @([<@K5[GM@M0TE97']4/';D-?<*U$-<[&EO'<>PKI6,0 M2L:MA 9?FS]'.6 :P67+,5RKSVE=PDU@>.$,;O3R@ /0(3MJ75KI1KS[7JJD MS%F;&V>1$,_C28)@Y6F$PIC A# .W=CGB(2)X)%6)+=QSW,CIUI.=03AK:0@ M,[$(FF.O<908"]'7NLUI4+X18".]F=W5'&6#C?M8:$^T$[>*NMFN>@ARO=MD MHP:GV_<.T7-G(SNH@3-J\-0U,+=IB#;1YD7WM;V-B5](#56_3:0VJD5F\1JD6M)MM;)3(0RU0;%;V M.-K7].4Y3JE]L,;&R9?,(PCED9JM:>6U])GGWU+*B]K_;$'#V)';00H1CQ!$ MQ(MA3'P/.F$H!!7,=P36C0X\VLO<6*(1M#IO-9+J1_$=Q_+$ML\60B.3PP%P M+'HK:J%P1MC<\;8G"XD[J5XWW.WTP^=ZP%RNRI2ER[5R.]T6Y'GWG2[7C+/W M4G1U^[_5*_ *TF@+U(8&W>$G7VR0F5^H=^6\? M>=F&:DC%ZU>'NK18^R9,_51>8Z0G=#[IJM>IV;8_P%L5J]*JC9+;89W(E\3V M8%AW$+$FX"MY?=@&^+@KA_6>S-.#57M7V:#X31Y]5>(+_0Q@!UZ=&Y771R8E MH[J0DM\!:&0U3^1U"*A^'K6 T20GRB'P&*7#RMFBJ_CSM@^KT?+6$TLCS M]B['5;'8GN1Q,N5*JC,("(A!Y,8I_ Q"4AC>,0\0 95IXX MU>?<>.)8-A+CFA0GP=8C#,L0CDP>.^AUY&VI=IP2%;H V2M4<;+'J.PDEZ>^RD54-BK[I1^S\I)E3R5GV^.$IEU&N\&Y,5HC M.&B-$:WXU*N#;Y7TAG?^8PVM MYLW_# 9L[/M_BPDGFF+;G803U9=0Z6S1 V#D0;'E!S"6F--Z XP,]@N?@+'[ M&YCQ\SP'A?K.:>&2*$@$#F'( P\B5P@8XS"")/0)BQT:^,Q??.,YR;0S@=J0 MRX2-NM*->/&YXVU6U&YF/TI>J7_\R3#_IY7!TULQ)A^0D9<'2RYA]OPH1@': M5A91*S)-FUO4)HPO,HY:;7P@!%&($IB$)(8^ M#XDDYQ@A)S'*Q-QM?6[;\$HXH*0SY,L=R#1Y;R@08_/7!@/KY2L.JFR+27;: MGI81#JGU8F8??.B,X_N0/%XJ3+U\OEX595Z%L1:5K]G= VX#%7#;$D)>/C_ 2"SXU7*NGDTC]X0S;9B!N<\F8LO^!+@0235P\ M;*_D5NQ]NL(KJC)"E?QQ>T4=^&$@-Z4N]%D@=ZK(0Q ' D/B(H_X%"/*J9'G M@&[/^UO"L>+VW[C!LPHB_%T<4U%?KEFJ1S9R[*4_=3E+)?X M?N%BA'SNAC FB0L10_),34,7.L+#6#@^YIX6/_5W,SBIUK*!YM/# M=BN_\A7/\5(RRR5[3%>IXA-ER]OU_HW?E\*S^94O:DSFV5A_>O>584"P>[L9?XL3PD MN7([XF$&L>]BZ(0<.0Y."/.-BM;T=SO]03I2 M96!##F,GYC!Q?!:1"#,?&06#O((.^>X[?5!2O\_R(X4U%SX*612@ M$#J">VI''T), PY)Z'*/"%=PWZ@TQ1FRS&W5JU2!F8!K>22NLP6#K-&GJE_5 M: 1$EH-LDW5[6:6*6#9:&<=9GC.8>DO;1$,T\A*U&1VI1YVE&-QT!N===W#V M4J)OJPI;C"H_'U1;T>9G2#)M%/KYD+V(3K?0Y$ 'R.4R^T/E-),]7&5K4HIU M6X:H^,0I3[^IW!R?LN52?I!JM5AX@L4QXPZ,?1Q(YF54DFZ(8<)#%%,_]%%L ME#O#6(*Y\6TK+-A*>P$V6E43^6W.65J"#_)D"KXJ5<#[6I?CIDI+HZ5'K:.. MP0R&TY1-JW/^T?J-#X7GA6SJXH2'Y!*NP8KF'KGR=M5,(=M^: M&UL=2(JGZ2AS )%^=CD/C)%IXP .UGS CRL^,-_?3E,3IO@[I,)N5K^#3PQ- MW%65MK_%>?DL&Y8'6%H=3*_2@BXSE1VTD]R/^]RE20)YQ#E$ KLPQK$/Y6$0 M!\+Q_=CL0L>@[[E-Z$9T4,D.NL*;IO+2AU_SP#8.J&,?T([B";:"6\XB<09B MUG)]Z?<\<YOXR;V)H+M*7=;(V)[4O*R8[5!L5SN2Y3C[:Q([Z"8Z2 MV!$041]#%*B;'QKXT UP'+F)E[B1OUA5F6J9'IT-DD-K#B;U'.Q*,]Y45&K\ M!:0J"+"RCD@ZY:97UL.&1(_@QH/YE0L>;I2X %TU0*V']6C=LW"TED!UB P3 MIU<] Z:7R5?/:6SB6+ZZE,RM_.X?U#_)HU_UZX4?(2=!$5'.A1Y$28)A@AT& M"0T]RKCP*34*@[ MX-SVBDU)GJ=6SE<(TCLVE ;7VZ\T0/._NVZ&=Z-E9?RJ M_FT&<74G1N"UX^>.B??GB),[ :ZU>+A3_0Q;%[X4_$:\*\KT46XJBT42N0%B MH0\10BJQ6D@A#CT,_1"AD.)8,!28L/IN\W/C9'4/J+*BM/*9\? >='HL.AR0 MD3EP'XN+.J/C,_C:_#G*J?LP')8(::_Q2>GDL&+[9'#D*7-S^2W/+BOGD.7S M+4XK:C&HO'/X[;G-UMMW-Z 5$R@Y]]9JPW)91R [;5<_'ZV1I_)Y0!F9VONQ M&&1R/]+D9*;W?I6Z)O@33YY;8'5;3N9&U 4Z[_#W)G+C#5]QD>[7ATD8QLG 2JK&LLR-/+K5-*L\W(6:"FJ3WM0^E?J8 M;@#.&2K-,]%-FL?.OUN5:?G\/EWRC^LJ:!-Q*G#L<. .\@G M(=6ZT3S4^-QXL)8/* %!+:%^-"/2 *1 M1S D/D60A!A[-$A('#@Z.)"]I#D';.MZ(;=L]UN$TZTJ/Y_/G08XU52J M7JC8TI7_7S&F3A.3$*B!+BV?FKPR@%Z'FYU+V;.*]+T1@N?IZK[)X.B['%/" M&,14N.K^+X($4P?BT"?(27B"]-S 1I%N;A1>B0F>Y._D%*H%!4_]6190& M""*68(A'0(]"R]HP,[ M\FJJX\]89H#PZD+J E3P Z4(>-^7B\VN0^,I(*=P:#PJPWP<&D_!9.30>+*Q M87QXI+>WZSR7O2V",$1QR AT/$HD^V%Y,HE1!&-5Z0G%*(A#(_?$_N[FQG#; M67AF:H$3*.MQFSWL1B:Q/O)JI+5'5'JH6&*D$YU-2CUZBN]SC.9; R_=U9;M MNBC6G%VMMUNVVN7NW>/3,GOFO-[7-?YW:G]7+,(H\<(P\2"+?!\BFC 8>R*" M+N&A%U(>89\;7;@/DV-N]--*"HK:[M'(6AM AOL]#QPDS:OV\:$?VZ!1@5VK M &H=-N4^:S4NP&9DFC-M.S*5+A:OU\\#T];5^D IIKU6/P^J%U?J9S9G?IW> M)+A^G^:/UVR!W2CVB4]@Z"8.1*&+82PB!Q*/1CQV QZ$6@?.%RW/C>/:%.I* M.G!]I7^+OHO7Z2OTP2B,3#>Z !A=GA]4=M#-^6Y+DUV;'U2@>V=^^('!J9N=6"X7]%2K4GZRGRO]6+(@CG#"66Q;$7 J1 M$"[$)(D@%IZ#L<>"A!H5H^SO;FX;M'C"TL/$5H*S_LZFS6:FI?B+U&5Z;PUU)O[\P)=+=4V(5\\+G[@. M]V(7)D1%87 F(':B&%+AN@GU(KG#TCX"O6Q^;H31N-%6(H)&1E.7XAWX3I^( MS@-E9 XPPF. 8_$AM<]P+=YI;F+GXD.JO'0O/OC4N'?HZHKJ3H+*%SA.0LZX M#T/?\2#"/( Q?4#C.K?D6=+U=P:A0CDP2 MIK?EU3UYI<3T%^4O\)OXDGS;_RPOR%_ ,_1R_&5#PTCNS;I(5RIM$/WO=5JD ME=.2^E&V?)6I:@(+SPDP,'OM8"6PS7U ;'$C>=[F]2+M)6?Y][ M]%^T7/OO@^RVJG6\(!YQ?)I$T(DCH1QQ7$@HQ3 B3 C*.(J%46VMTUW.C6UZ M:]F!KTKNNKJW849Z#?"U3GPNFO;J [X :.P:@=L.YU$G\ 4 VK4" M7[XYC((^\C^:'/3JLCO/5O)'6OEG%W7BHOJ_G4A2G#@X#BET?19"%,K=#XYH M('_R,7:A98D'C[B?EQ*'@[#/DX':&\>7[ M=)66\@#Z3=4XVC6#?^3EPHM13/R(02_R$$2>+R!F\J\L%HD71H@%>L9KO>[F MQH77^[==%V#%#;->GP"8.!)8BBB,!2$081K+PW<*%^!CSR=JS/EZ MJ%AB^!.=3HKOL[?F6^89'3_QHL1EM0Y<<Z>1W[VI@; M]79D!3O" B6M?EK'7MSZB<$F9"-3PD"TC'([ZD Q*,-C;\.3Y7G44:^;[5'K M^6%[LKN5P[<"^;P) R0#U$4NG)WYC$5SLM@ M)!@/O8@CQ(S.KKH=SXTLVE+@3WE*N^U;8BTT5=B6O"B^I0TOL[3],,;*T$]'N=M(]B2D8 M^[L3X_>'9!;:)''L'&/5D37EQ=82[091(+#O08?$&*(DCF'LN %$,><$NSZ1 M_Z>?+DBGR[EQ5C<+:M>NT\@]X"+ /Y^?AH'U+&9J<7SYA7P-,FQ8QO7J1+G M=+Y7O,7WJ1'=5L8W(WCZ$]IHM31AEAH3S793SQB].>!L*=MV'1*XJGIH;:U_ MO\3WVL?*PZ_/C7"5F$#)"=V=9$]&]Q-]<&F<)L]':NR#9#](X*N2UU)=WA-H M##M+'FESNF-DOU([)\@3CUHWZ$OV6#^NJPJ<70?X!6:ACR/A0S_"\BP94Q\F M?LRA[V'JLM#Q.69F52_-A=": Y.6O.P("B[',$T?&XZSS=7G0#P/$[8Q]C;M MVB?@&]_6?4R N=B_3P!D8!,_U=($?OU_9 LG2'!"J <)HC%$@E,88\2@3Z. M>1[V"3-DOQ4@Q%]^B7@>@PW(HPCT]LP?_X_LE?RYM]B]QJ^_++W M^7KR;Z$YRX^_T\P D]K;=5%FCSQ_FZW*'-/R+9:*+I<5539)?B6%T8B['A0H M#B!*' ZQ%T60NK&;!('PB$#:]K33_YH>N&L38)'^UF;MPK!06-I* 1%;SY^??CW[4)I!HL:P6HD/II\QN$S^7?;W-Z MD]\5>5.^6'X1O_'R(6-;%WW-ZP2=MN;&@4WZS,K]))-'N<^?P%9V4 NO?\&@ MA>;IVP;;0(Y]@:N!H5[E+J-;"!.4!EU):'4PV?V$B;K=RPJC]X:9[7['>:H2 M?%5':>6.LO!PC!/'BZ'+$8?(11Z,8Q1 E\9.Y,0$1QR;&.9>]# W'FD%;/*T M4RFBF27N)89ZMK:SD!F9&#:@-$:TMWVH&%O*CFINR1;VLOU)K5U'U=NW9QU_ MT$9!ANI33(B?)%$20@]S"I$7$)@XK@L#&H5.E,0)%4;3^647.ZCU(_8?I9?5S!_CH)%N;U]>,33G-U[+O)K]+B M*2OP\D9\R&0/ZH:OOM?;C\X5@>/$2/D5Q$$$41(DW,??B(WI+U1T2.2L;$>F6JZ,.>@5> @Y--$49^#IR7Z M&B3"I 1W#DC[%'A66\-(\FWV^)BMJA-M'3%1EV!8<,)(),\QD,?,@PCA"&+D MAC!D(6*,!QYUC5)M'>EG;E17BUF7?[EHJKV M*Y,,KC^RS&,]5C- G)C7\C5 MH'VN06LKMM1BVF.C$SA8(IQCO4S**2=4W:>-4X\/+"TUM(RHRI13/E^OBC*O MC.[%3?G \[L'O+IY4DT4O_.B5!Y6;4'NT ]0O!\YPS=Q%%U(V]"$,)(=7IVTC^ID@85K0R M$(:16:-&X+8? 6-*.*"KI1G?;7G2"7U I?WY>NB1H0:WVM7S;VGYT+I_OBA/ M[B>".JX;0>:'1%G?$IB$W(&,Q3SV'(XC9I1[6J?3N>T?KGC-?R#GW_AJ;9C= M7@MF70.<7?!&M\8U+MQ_2'E!*_"X)>%-(+)FJ-/HV MUQF D8FOT0=TA:QR[;?%X_,JT[=2"NQHM?M&K=?D V;@$C_YP$WD/M\.8'?F M@"YC6MYHE^%$3/QPA4A].," M@L3T7^FMQC$N9X;M>SOZ^0\%UC3[*J5L+:[*^^D?P$6B-A*@ ";O3,]U9:9( MX)P?A(.#L^H0Q4,$"XM%*).R'Y\N@)G #.!4W[RS* YEG%&96FGT;LF;VC'Z M'Z)X_%F6U*B+-GXDQ3K0?(A#Z48=&5-S&/R^)LMM6>7QP**EA\OM>AOZL5YM M%7U[JUHUV#H\4E4FQ<'SU+#87L;@1\FEGQ G/PO@RN_DEKAQO4M>@#WS(?F9 MQ4$QY"HFHY180$)# M:1,=1+9E:/F_!_$L2J-9B/,Z(.&&^L9MK..8A[DD": DUD5:=7F),,$ I:F( MD4RR*$T'%YJV17K,O+[R1*Q.R*^'DM*.4#4[S5Q@Y?E<.OTZ5E16)X^O6M 7 MD/!1^[D]S>O5>K[ ;&=MYTO/VS>S_R;8;EUL7S[\I;[VRT?Q17T%YA%D@LF< M 1)##&"6QH!DA(,L%^K_&,E)+DW;V5^:8'(BH*8Q:(@,-)7F+>TO@MB]\UU MXUL3M4/%JK%]%^N#6MM?''"TYO9=[+3;VW<^YS+8M-+<[I;\TU(W]"M^"6T& MJ"/@YQ@S)&'" S$,[[M^(?8M2BY=9%O1EUZ3<6Z SFL89#<%$XAH-(+(+#C1;*AA$K!58+2, M9]3SKL5/-;6:1LVW>A*?5QO=F^M>?B=_S7/$$Q1B#C"GL=)N) 64<@Q2"BF3 M!"49-JJC-W#^J4F^=AW>51G4S-H,!(^D6 9O%HH#R\AWVW4Q$X0>T?8L!-M M5]'C1[0'%?'!&TW^;V6+/VT#5#RX$X4#P7,D!FUG'U4$#H3F5/P-'6:8Z*O] M.J)EK:OKA,$0PRS+$4 )YP#F20(H2F(@TCC.LTB&F;#RFER=:6KBK#*,KX8X M,JZC:2::G&#D60@U-!XY$/I+U%E+FEXL',F4Z_.,*CUZV3V5$_TON&\-T:J^ M_N$OK9J)4UX3IJ#9 M]*$P'G-@T9SE+['9:G/&:0T6S-*$4*KK0# )H& )("R)0!22/ Q3F$IH)5:O MSC0UF7D@U+;4S54LS<2<$X0\R[ #C2/5I.G#Q%7AF:OSC%M=IH_=LQ(RO2\, MDPL](7E_D"W[62P?CSX7:VTENY?EA_.81400&0$DB- UQQ' A$@%/9,21SE- M$V8C/VZF:&IRI@E_I6*I?MJ>1+X^U?R<1,=6'-G)I=O7TDQ^C;I"GN7#R MV2&ZO&'HZ*%94/.D5>OR"7?"T!G CH3F[?2,*ER=P7/JQ72G)L7]3GNIK"LSXO*C7R^#I&4 ;C*). XU3I?+'2^?(PCT&H MKM*A8 P19%0%S#5A4Q/=[6MUF\VR$,^U>W;#:_G0GENKQ!-W*]TMT5]S_;P+ M]M9RW5U;KOO6.R^*?@5;&CCZMU_2?]7#3/99:1C.> ITD(8!3% M $<0@P@G.1:0"I%9%20:E_RI'?-_6Z[W!%>%]0 MHX%8B[M9*5R8]H]7G3,/ M[\R"/YO$)E(G-MDT_'NE[Y"EVW!RWPS/"D1/5-@LV#/=9#UI+LM4Y!>Q#;ZV MOAT5JX%K-'9>* 7=<-:#:)$^Z6V)) MY=_4F)NOBJQUH05OZ8Z^]+>*9G7"-\5E#D_6,1)9'$K(" 4YCU( H50_R1@! M)%@8DRB!A)JWI_5&YM0.QH=O?]O,@J_UOW>;4I=^KWZUN 7Y6U.#N^TD5LKS M0=7BL4Z@+ND,#BS5X317_ESQ6EY_][69VB\,Z!#I;\TM[L&36/N1;L57O@.S M*U^""W^OOP7DRK? U;W9^Z)TWJ+]S3[>G=H[@D>#[B:+H=QH%>Y[;K3J)=:]QGUV^$N./+@&AO[+7SU@<%=94[CQ?<) M$C1#648E!PD1,8!IGH$\3"5(:)K'5+"(9,BF!FW'7%8[9$D5)JW4K MF:O FMEI','E>2L;YI3,@KMMY4(MW2_;5?! 7%>V[(7+7>>9JS.-W7VFC^4+ M'6AZ7YF8O7R>A3G&&8= 1%+',R(,2$K4/SE,LE#F20ZM.OUYHW1J^H61%;SQ ML$W$LOW:1NP)B5:']NJ>4IG3L4__JYBB_R^Q.H]N8+[%EORU*B_>,DV7#M]Y MCE,,ISJTQ<:J=PU1 M SNL YP\BT^_$%F8+1U -9+1\0)DKLR$/2!T&OFNO3N>B:Z'^B,#6]^S]D6S MWM>K_UV]JF[E84(P%"!/0]WQ7I?5$4HY3FC(8T%CD5*C0)'3@:6VL(ZRZY=@M"'B676;,6Y7 NL3IH-)71P.-5O+J$OGM4E<7/Q^@9-PMR>)E M6[#&/96(.,&09T"*'*OM1B. &84@CCE-0AE2')LK%R>#3VW+[D#5UCNU -.WQGO_+]"[=&Y?^V9 M6ZO:?Q5E>9<'LMZ^E-WF""N+C9S$D\=11F44IR!%& %U[TD "1D'DD,<\3") M4FR5M6=+P-2$V;?=TY/N.+&21UE>&VU[_KC:+?F0>GNVBV)FS/()M6\;52N? MIB8^**D/VN2/5!G>#CWGM=\-IW^EZNYVX%ROWVXYSL!6F*L5_[-8+.[8?^^* MM>#O=^MB^5AW'N<<)@C'.1!YE@.89AG(,\2 3)30BW.4A<&JBY%K[R8;FV]MX'L%M)DI<@NA9G/3A%_S0!#M4=$RQ\=BW M\VBZ5^_9>8EYDWZ=%]\;J*B(U>.://\LV+M566JX&OEKL?E';09@L8A)K)/R M\PP#F/ (Y) R$+(HBCD*2%0;K?-@^A./#$H5TJ'--,Z5YD9"#G(@(4,EX',<\89&1]'6.^=@= M:3?!^M",MNS\ZP%M,\7,-8:^;V4GG6I+B@\^ICHKHR+;4^/:'I!\-+&]-N7K M-;3M :&SN6W?N^X4OGB.81I!HNYYC$FE\,4I!+F4&<@9RR.B9(X22+-4AD8Q M>CWS3&WS'R@-:E)UHOCU2%(K3+MWO4.D/._[*R -B43N0,LB*-D-:B/%)]M^ MQ>R"E?NAZ(Q;[GA]O!#F?AZ.HID-'A]H 2\V;+%2FI>XE^ULT3JN4"M?FT.^ M:9WWO#FX 10M+*GWXC/5.3M6X:B]^Z M2(86^/&@]RR\>QN.>XE\=H2?*Q/_C=2,ZPQP ]V9V\#1L -#'G=K75/GHU"O MD,5W\E==,OUMU:=H#M7MD@F9@SB*)8 XQ8!D+ ,91F%,,*4PB:PB'KOGFYIH MK.FTC&OLP=1,TCE$RK,DJRD-:E)+YV/36^--3>[UQNSV,8UFP+@*:>R9;=R( M1C/6SP(:#5\;)D*47"HV]_*.,>WXU+'897.ZLQ:31,8DAP)(GJ4 YE))$IED M(*7J_^DR'&%NE!5K-^W4!$I)==4@2&R:.XZ=>#'$VTS*N$?1L[#9 W@@>9SF ME'9(.9(^AI..*H3L@#B5199O#Q-)]]N?8OU%L4,V/ZN*=;7$FV.>(9$G J@K M80Z4\A(!@I,4")2G$>88X2BRG6MZ?M*2U%FP%):.NNMPF@F9VR :1ZZ4 M- 8UD?NBE#6=#K677BP<28[K\XPJ+'K9/94/_2\,3(Z_6(^L=>%^^W)VRRJ+ ME-T_EQF2][OM9DN67$FL_ZC[_-Q5;7X^_"76K-B(AW7!Q-?58B%7:_WBG+%< M)BBF((\AKG(YVI(3NHZ0X:PH.2\N#-__Q_ M-QJ!Z_MU*M\-,\$Y[14?T4#69O_(2D9?@HN&M*JX90V#^N$ Q"SH^Q;]N*.; M,@',9<6!5UM)5S4+QF=@W*H'K[9 9W437H^2@0: NJ+ W:&@0)F^2X5 88@0 MR 56-_X8$T B3 &%&2=A3A.>6Q5=N#+/U ZIALR@1:?E#?\*H(97^MMA\GV' MOX"0\]3G'AA<7="OS#+NC;R;U;,K>,_CPZ3 W6*Q^E.WB/FX6K]?[>A6[A;U M+7_S53!1_-))4;4I[C5_-.[ MF^_)+SM$LK7@Q398K#8;85F8,JG40,< 20HG34.90 MSJL^IM^V9+U]K;6H!=,I)3[MC O-P"R@XK%8+G7)EY4,7@19^UP.FN*O"/K]4M]G=C,$XHBF,,$1)F.5X]P#C"5 I"<"!IC#!-A52?I^E13 M4_[+]D4-M>7Y'; 6O99V]^L(&QK>G>#FV_*^ATM3&1R1Z=#NW@N%*\/[]8G& MM;SW,GQF>N]_8V#\YK[]HU*D[Y2^H%9K41GWSZ-CTH3E/$4AR+*(ZM80J2F"$L,D@E0U;!FA:33TV:E#1;AF':8&TF17PAZ%FNM#K8*KK+IK8EY8US MSW.8TA#47(55VDP];@SE %#. B:'C'%K1>V/Q;+8BL_%+\$_+;?J:U8H/>I. MW_PV7^^[ MU1,MEJ5G^F&]^E5LU ]:"U,WQJ?RKY]T'S.R.,1YEO0\+X32V?A_[39;3=1! M;FWF@LXD+Z/42)/ M,%VE0G<@#W0YLJ>RO\8O7:Q"ZPF\N115#MM(?@P*LN^7%8_!:_[L,IO"V)XX ,]W2^2DB'-[BO M!87XF_!UXK8_KM92%-N=VKJ?EG6+&@BID!(1D*>$Z_J9&&-4B[*0.O-R)'6EU;3T-3S2BOTKQ)4*Y&N&QUY M7(B)A#I?HO!?*I:Y V+7P?M>+,C+G&.2(4%C$(:4 MJGL(82#'80*(.B#",(XY0[%QX2UW=$WNUJ$)#-85A>IZJ4BT*#OE<+VZCX%7 M7(7IB_YJ#6O^@O>OMX86I<9>9RU'*DTV\IK:539SCWQG)32'TXU7.5 MUCP,;U^N]IM@.]U>(HKI]V*[$/,T2R5/20)B&&O+788 T;76>$A%%C&8$4Q- MJ]2>#CZU8Z\D2AM4H_@-_2UHR#6O27N&7O?Y=2LFG@\A6SBL"L]>XWM0O=FS MP48K,WN-C79UV:O/V#< ^[3<%%S78^1E;8U";![6*W;'5\_J!O]Q01Y-&X'U M#C2UO5D3K-N)\[)5;TUV&0*F:1>\O-S6+)@W"^N'M'L3.T?3NP?7"LC@AZ;? M44\Q8YP&]1;K'WVT'F/&C+9[C9F_Y,S->ZA3>(BR2D(H$X9"=<0G'$ J",!1 MFH(TDI&@DC)B5QW0;-JIR9M+Z:RW.]PNX3W8>W8CBJ_@"@L.)'LJA6H'DS_W MU*5)7]O7U &$@>.HZ^W;,@B^D[^:"+>_FK_5$;]?Q4:L?XG-W9+?,;;>D<6F M_*_@GPM"BX7:EF(SCWD$!6081 SG '+! 4E(!@1*PQPB&(?XU%\"P2]\D+92?'DJE9^?/^@YJQ6="P5FIE#7.SH%G! M%G_NDQM<(>XX\>%FLEXE*<(5F-<2)IR-;W\9O7M\W'Y8K[6UZLMJ^Y]B^UXH M*?:D#@YNW9C:9*S)B=/'QW7IHP\4Y:NE6.TVQX9=Q4F@6 D.O)A?2XW [;^9 MNL;5LX0< *EC1=(6M$$W5:,)1KNLVK#;OJ]:O3? [WLU=57)MV*MLR'^MMQM M!+][TD%+ZUCC2 ,U3\QIH+IMHX\SHQ]NW9S3TTR?2Y+S)1Z M'M,VG.U*_URH6]>NI-K"$6BY" 8.6W_0>A9.'3GMP9[VH"(^J*CW![2%5]4? MX"-Y3K__% $IB=/>B(Y*#!U?^8#OA/[CHG@J*GHWKKI"#<.WTS]J.>1X/M!A MO![Y.0<.,U5=?Z>VQW[;^,H-D=_F9A#O9/+W5=C\\%=N73TM%17G*;
77:(% 3 -,J2G+(D9[%M.<$I,&;_1?)?I?!#67'Y M_[[OD-GQ/052)Z0M. C@K( )6L@$58^2K<+FD*VQA^="7?L2HD!C%&B0@A*E M"61R>%CSUT[]<,G2OT:NB(=%=)9FN%>EJ80Q/0J]PCW%N;8**_%EU8,PNGU*'73@+B%1?@U;B MH,,S9C":KDX$>P+&E=^# 3J3ML-'NJ%+7^61;DIO M@9CD*='MM!BS:A)Z/L749%NETPTITG$!/C,)=1LHOCTG)1Y-Q(OSXN/7>7?9 M=^]X@O$;[EUD\&*GO7[./_#F9TGH51'B<@#'4OO"A!:F-' B2$ M$ [3&&?$JJI/QUQ3V^&M:97*"77R?+E+^NTS4)L[M;%1GW4OD IF3E/0BEP1E.0X4P F" ,<)RF0"1Y MPG**DRRV4G\\T#@U87A@)7A43 1O%J77?;4,BM)V5]KU9KJ Y8!KD^/EM;AW MO=ZB^;ZXO?LT"]X+N@T.1"OQ^8L4"QTA =0.!=^(;C;56MF:X>#W12"1&!!TA1S$=HUP+F) MG*D="Y4MFEZS10^^5]^X:&8GP'A+,:)_>^ JV.><.0'/5:;9;<2,FU_F!+BS MK#(WHPX3L1^+)5FR0A>FW?MX+R7,HS!)8TP8$))+ #/$ ,DE!93&,,R)#+/4 MRI]@.._4A.8A^B/X0Q!-:DFYG80TQ=Q,%'I TK?EH*'X*";'>YD"2Z FJ8F?BMC2EG],;E#1:UXUK1O@;LGC%#;/ MLF8P8E:%U8S0&%1EK7ODT4JN&3'8KK]F]L* !-5WJV65+:*CS[ZO/JYV2UX. M_8D=HSV=3$PQ&YVA9_(-@B M*;(/X6[AX!HWS_+A&++O;)_%HO%Q]5:%(_+*IJ%O7Q?D^5F44[3V/[F M+$4T39(48)Q& $J,E Y&"$@0(U# G.",V5P(S:>>FM2M*0Y837*P/=!L=S&T M@-_L;N@'5,\BN2&Z;*!1(MO0';0(;WLZW-T1[0%S=$VTF'C4FZ(](*>7Q0$C M#% +E2!<_W]BO;I?BO]3QM_^0;;L9WWJHI@1S%D*LE!WD@ZESN/+,9!A'K&< M09;&YATHNF::FFB"8?3F'[_5P?U/FDX+7:834@,ET!50OJU1:J1 TQDH0H/_ M$Y2D!B6M0S3 3M0LU#]7Z(VD^Y4H_E.CJ&."3KYTKHI^FJ?MU#C">XF?" MQY'69_3",)7OL^YQJGT,<)C+&&,ZWJRU9 MF&ET^Y&MI.)^?'_?U>]ZCJ DKRG+::>G'3 S4\,&(>%9[)4TS0)-E3OUZ8Q1 M1]K18=Q1E9\S=DYUF_,'+%67]7;^5?MZ[_XJ-O.$\B3**0*IT&9M%D> "%U, M+8J25$80IKDP4E/:HTY-)=%]M(O-MF!J"[9<:(8G[!%>/3K(4!0\;[PK 0_ M-)T.W%T7^>[:A^J%UAY4OQWVW_%8XQR0E\C?'X87/W3F^2Z_501)"2F50$"2 M AC#'-!9* M'NC(%\(%"!%#82Y(EG&KNG77IYJ:2*@I#4I2@X;6X$=%K:58Z$#83#*XPAD^ZZ?1_\;0P)1/2[7_"-L6O\1[LB5-UGB< MQS@,I0 RQTJ!ST@,2,H9R.*8)"G)XRPQ"CCNFVAJ@J(.LF@1JVLED=ZDG&XH:(E"L#CQR0TLW>>3Q*S_.#LQ1(74)?29A[^57\ M$LN=^*Z3=>9QG$9872@ )(@#*' ,(U?KI_*OGY;%5MU\[AC3J=3%\K%,T'I>B*TXY/B] M6U4M# P)2/.$ 1A& I"892"*B,Q91J1 U M&O1 O='NQ-7N/./!XTX5;%WZ$8IE\'S@NJZW MQ/ R-IU%?[W.BK.@Q7/08GH6U&P'![Z# ^.SHXS<(^:#[P9?#Q<-&CVNEK\& MCSZ(?NT&D1X7PJ#!I,_9AS:HI-M66G&3]?YQM=8Y[Y6R)T3*6"34^86Y ! E M2I\FA( PEQ!%,(9(6A6!,)AS:KKU-_93\-U":*WZF@RIXF!:9*IKYG:W7EJ7P[H"5K>@<(.39[DP%"*K:E;=* PJ7'5ER-%J M5'6SU"Y'U?/D,"6B29)7PN"K>%9?AI]D4V77/ZV690#=7,8H$UP*A9O0S6%P MHK2), <9%QD2,<48L>8V;*9%]$\ZX!+K600<"-UH,Q,K::U"-^T4!P/$S?0& M1RB.(QX:8LM[_H%<#65%A*QS'<1L.AG" ^] $F1N_*5H^>K-W@S.L'?N5,<8S2% :Y;FEJG!EIJE) MA/J(T]2"?VAR@X;>JI..=8&;:PB;J@8..&U2!:R./K 7T M,'BN /2],-0)4OE2ZISI?1A-.K+;PP:(<\^'U=LC=_#^7"S%IZUXVLQIB".8I0D(*0L!%.JG M'&()(JR$5BQQE&:15?_%FTF:FNAJUV#N[VY[4JM9S[R0%%>QXKU-3_-@N^"$/?^8T+9"A^OE-0)V)T-M&&R8VOXHM41*8?R#KI9IH M<\?8[FE7UN17&GC!U/4P1#C!NBH^S60$8"R4B(R2'*1,)%DHLBA)H(V([)]R M:N*PH3@0-S#55SDJ M7.%TD).M/=:9<^'G9 :^=[4;4OO%MR71E9;5"Q9(78G/?6G8L4 MB80R!*(<9@#R) )YK$YM*1/&(,84(6QS5EO-/K6MVB(^($MMRFB1[Z*[MMW: MF)WQWA#W+"%<@FU]] \"S9$68#?WJ K!(%A.=8-A@]BK":V@HJ9M[ZPH^DD_:RU512#IP>4*&_<=M_)7Y\+0HM%F;CTL-:FC.W+@UKUK9(B M'_Y[5SR7)N E+XT='XMEL16?BU^"WVTV8KN9DQSS'%,*HBA+M28C T&(J:+@*2K8"Q4NP9ZS\K3+W5KP%)7-!Q=UK+)Y%\?;76,21"KU7 MB6_:%L^;9=VJ95W4;+X$9%LUJ"F-\-N5_K3Z43P]K];:=<(+J=Y4>I+Z"F@Q MK2MGE,#,@F<-S:S- MSU%=>^>##R_HQU9K_?74FT=7:!;O]-=\_?)NQ<4\ER@.,Q("S&@"8$HX(!F3 M("=YDG"6)4A2V[I^'?--327?UZMKT3P+2JH5S$%->:!)MR_UUX5[]W'I 4W/ M!Z$+( <5 32 YZ9:@%WCCUX2T(#92Y4!35YS5M]+7RL>E\4_!6_Z8^HSLA)F M=TS).R44E;1K"47UF3K>^1>QW5O-,DZ10+KN249U"C.'@$0R!1F1DLHH2F)I MU9/;$YV3$V>;;?%4.MJD[N;]J^SFK?292J^HM(V6DDIJ-@W=&KX7WYR.V;2,UJ&;OCQ0SK>4'\U=QR0N5K%]ER";5! M52VGT]V607*L6;<%":-YG([-$4460M:^QBO)A^237\383W$Y1?"6[CC\I:HR.X]R1Z_.]2MI(+_O7,D;Z M7QPF;2K15I?3/NBGE#%.8 1B&4D F8P!820&(8]XGJ4QI4S:2)B+LTQ-JM3D MU=JDG1"Y#*.9X+@9',_"HJ)OUA2Y]R(>.C%P)!(NSS&J&.AD\W3K=S]\6YMP MI<-\6F[5*A=[]:;YZ&&U*-C+/(L2P:A2,ACE.H<@AR"G80)BQ'F&F AC;.3# MMIYY:F*AH6Y80_!^H,V$A!?X/ N.AK#RSG:@.F@$RJ%=>$5Z\*/^KY<$ &L$ M'?<'[Y_W5=J#&\-QK3NX^0 #-92JEO%&7;@GC 33/(F:/UW$\3$-O\*.BV# H MVQ1%BP@7MVB.%+MR_BTLEKD!)S;#J#10R&&2\,Q)RGHP /B]=NS6UO MV;AJ2_N1A?TD=YK*7'+.*8BAT%V>6:XDLT@ )9#F&K>CXI72W@=!=3WO?=AP0\/A[CA77^9-&0=SORZ;!"GVYPJ1 M-(]D A@,E=!D(M8EK)&VZN="1!%!R*@B2-]$4Y.*==Q636PK8JLAV#;L[0J^ MW<+-)6J>I==PP :$MW6C<4-8C^+7YM^!:VQCSQ#9+T+LEAU^\1[@* M#X#:0QGL81 .RIFSG&JT/+IA$+1SZP:.,.QV^$5LWY'-SU((_&T:ZU9#V5935C1[(>OM2]G55@ZNS=_/VY>B3LA=H M)B -!0V!R 0%,$$04"XCD C)228D1MPH,^HF*J8F,-N]66MB@Y+:H,U(\/;E MY--!'5N'K9NM&U6X@83V@ DG1O0;&AX)?/9 )BN&\^& M##:P\6335XXNBL?RRO)^)SXMORA]]ON?8O%+_+%:;G]NYBA/20X%!AG5G1NP MDJ X3E* 15I#<7 @>::S M[*DHK\2SX#\%60?W2P<6MH$@N6H\:3CKN-TG[: X:T%I^?HP&=3*CC\-J;MK MU3^I2^:>[9R(1S*3N0!1DI4U;4- 1$9+#8]DA+$LM!)-MY'SKR^Q;EP.,T$V M'LB>Y5O%"*AJO9Q&^\[*YC1,ZVEMKGP(/3> .I*%-Q(SJHAT ]RIY'0TZC"! MNK]T?Q9*>#=]A.OMIV&L$49E*&@(=1"""B&M4I8OBF6]9\M \8Z(1=IEH1Y'@*4X0Q HO[! M>AM$'!:Y?MTF]C9,7RIA[;B!_=[^JC:B&D\>:A4O7CX]Z@331S6RC3 ""E'1)A$ R3R0.0SNGTD!" MIG:X5M506W1:>HJ&KH>ALV@$E'W[BTH6M+>HS41PX"+85YUJ\]&?C6/O+[H1 M3%,--#/H[5VU,]-%3RM3QB'.):5'M6.+S#X>:\Q0=RVU5_/=KL?E' M5;=!_S2/4)@+P@A ".R)5:\5U.0M- MJZV-XSK IB8.)[!YMW"T$=/$S=J@C5.BR J9Z:/ZS.-;/GH9?G<\-'_BGWZ MY-U.C;%:?]:+I&LH4,0IQ")1XB), $2$ B)H"F*)1NK,#R7 6<9! M2@1B<EF6;'VW^L SA'+HL9IK"&&![%B(MG!N" M':SR^RT*$0]4T99EDF&<\ MA$+)/!Q2@/,0@2B!,88A#F7"K.XYEV:9FD KD^K$@4K+'A^7D32\T-R*C^^K MC(:F1: ')T141]45Y]W M9+U^D:OUGV3--_-4,(9$GH(DC5*E ^48D$C]%*:Y9#!F7# C=\,M1$Q-7.@\ MW%:4HR*]-*6SZH;/VJ0/:U!IM4+=-R%CPJM6M-%NKQRLL[4TPHT:+[^OP2P5.Q+)YV3WK"JDGIJG2K M&9#BH5WID*^0:7=2J[%?I1GI$.ZO]1X=--;-D<,/9'V_+LLT\;_K'G0/8EV& M8,T)H2FA>:S.6HP!3-31B],T!1F-DR2&-*>155\_@SFG=M(>QQ$_DZ9-GXZR MY*O%@JPW@5JN*N)R>,#EU24P=4HX!=:['I>K%Z$)D&[4.8Y@2$)*0(L26, 24( CA$".8EC*D)$LXA8=I*[E::I MR;.:]EHCTHH":S&@"U"(F@$MUC0'Y-&R!X.+E303>R.OC_\;AN;FR*(=:'YF M0;-J%4O'-N]26#9M[ER![*X9WLT4C=TNSQ6$%QKJ.1MZ8'3]CFX* M7I#URS>B:YR4A\3=7\5FGJ>,<)YPH.-3 ,QS!FB"0A"%..("PY1;AL]?FVEJ M0E:3IR^:)8&6L?%7T303B4XP\BSHCN )?FCJ7$:L]R'@*B3]ZCSCQISWL7L6 M5-[[PC Y\$%*H6O!B2I^5%U:ORH=47<@7K)B492&F-*]=,?_:[?95EG5$8E0 MF,($\ 0R *&Z:]),*MTMECI5E? )7UV4F,0]F8"Q3>BGF7- MGOPFY%P;:#4'P3$+LZ!.:CIPX4&7N@5,1V)K$ FC2K1;0#H5=C>-=4/VC"XN MO!8_M5^]F5L;\]3$"[+9E(U-]-2'63\J&.[NWWWZN%K78EFPW;INJ?#7G%*8 M9DRF@$14J5(24T#S7((H05A$A/$X">=+\:AOY=\M4V\K@)!UCJ=70F%+?EK M0'Z/ZR^$F?!^M?4=,Y?HB+]&S+_1+/XV"\Z6_:HJPAM:L*F=?27[M\R9YH M)^7C+ZV#F23W@ZYG^=Q3+GY/?*M:H#&Q&5VH 8 L(B);I$)$&>$@&H4#*-4\YE MCHQ#PGJGFYI]0-,;U!1:A!7UP]HMB=R#Y5GZE#A5-L8#L0UP0QK7]B-H$8+E M%,F1@JTZ$7445V2,2V<$4?\HX\4*&7-T%!5D_M9 MXWVV;]5@_)V7ZN[]5HM M>!7W_W)XI*Y6>*<#C^Z?2S]2JSS3U]5B\;&*2II#%HE1=+OBAV0UJ?EVZOKPNB"N_F1\BQW6Z>07ZS&/G M=S;[:BZM >\>'[H DQ/,K5VK*%V7]NI T;M:BM5NAEK%Z7I?]BEHU\' M&17+G9JL#E]7@F<>RCSG$L6 TA #& GU$THSD!#.9)91%DDK&Z/YU%.S,1[\ MT#HQ0Q%I&51I ?HM?OU;H9R,-W\DUWT77EX=]AR)]].,U>ZV&>>/ M#Y,(GP]?]GDFXCB%(04DU$5V8"YU#&($8L&)H!(BCA,;):4U]M2TD&KG#][I M;=3,=O= +#SOZ,\& %AOX0NL.MJV[9%'W:H76#K=GI<>&=D@_9$4ZS(3[6ZS MV3U5)H^F/=O?5PLUC!886K684P$YR3,*PBQ56SU$"!#"(:I*0\'ZD:R5%LLKV>SM9]%F[X-6_-=)^:V.&_U0#PP7U[&)F#0ME^JU[9N M6U#\KV'JME\"9W;O 5,/O%BN'\FR;OFH[JV;U:+@%9%+_J"+>M0N^7OYL5B2 M)2O(HLR<+@.++U461 PAF1($D* ,0,$YH"3&($X1%4I+I8C8W4@=$SBUT^CW MJDJ*Y875]:H9WG1?<2U\7Y%;K,V"(^;*ZC1M]G2,]9[!X,!A<XU)7PO@ MZG;NFKQQK_6>P#VS!_B:Q]X-6MZFRQ/HYVJA7OFZ7?Y]\R#$^O?U:O=\$ ^& M3E'#X:8F@BN;0HONX*O8[M;+X.^Z-('ZM23?W"MJBFJ_C]0#H)[EJ!F6CL7C M *@&^4]-YQC-FVK)=-NW:OOJ0$]K7:CAFUC_*IBXH@_O:][=2^T%>USJA+:' MLOGHN]5FN_E<+,4G)0 WZ)O M:I*MNA)3PZLSO71U/GI-Y$'$&0Z[.!,E" *E,0![&!,",$"QS%L5(-(GFW8?$D.F- MI,-Q[KCG,V!?]I?I)1E6Q=<(^&YI[ W,5RB>W*(]V']04U_64*[I]PCVL%+) MKD$?*6OG?;O<<ZB#O*[!U^>MO!_$6 ">,G4>("D!YG$*0L92R5D(4V15SE/VEUVWGC M#VN$'"G1YO..JAY;PW&J^-H/8&]U'99Q,NTT$^>I)=;Y))--(ADU<<1AMLAK MI8CTYX4X309Y6.LXXNV++CJ[U5K)?^^*9ZW47O*3*C4AE0QRP'+MW99, **; M? FEW^$D8PSG5LG!-I-/;J0/G<;56 M%Z]:XS95,SK&F)H$4K0&>V*# [466D878@8ZAR.P?&L@5W!R>!\Q16.8)M(U M\'AZB0%[1UJ*R?-#6Q_I=NML^Q_%]N>[W6:K;B7K?6+)%\7*;JWOFW,4QSA, M,0081QA 3$. 99H"3%G&8A:JG[E=^R.C>:M M'S\MU66'"5T_N.H(JJX[[]6QNUB5%YXY17E$(JX4$4&D4DEX"FB4I !1!.,\ MB7%,$LL.9U8$3$V"-%36C5CW= ;L$*YCW;W,;DG,=!6?0'L6.Q2: M_N!H#5HL.&U!-@@\=_W&[*8?N[G8(' N=!(;-LXPT?=5E&ZB![+>OGQ7Y]A& ME]I>+=^OGDBQG+-$QCFA.1"40UV9(P1$L Q@SBA)$R($C6WD7.=LTQ-JE7.Y MI#9HD1O\J BV#!SMAMI,?CD#T+.PN@$[:[%DA(DC&=0]UZ@"QXCM4^EB]I)C M']1W-5[]+:4ISA,&';B>CK,.36Q\GFU? 2? MBU_E2;Y\++O$EY+>D;^IA?:-;J9A&'J6+%?A\R!9+)#Q[4%JS3@-Q]$Y!,;^ MH@NO#@BI_KA;R&*QT /6KHXP%EC(F ))XQ! F%" PR@'BW. M<.'SM\8+"+Y*\5'([_6G!G:!VNE!=%K)\VI=1E%^$X]5T\\TRJ&(1 8RSA" M29B /.4"I)PFF/*0QI+9Z$'7IYJ:V*HHU=4'UGM:@TU%K&5SI^OPFBD^;D#S M;6W>XW4@,VCH=-BFJ1<+5VV9KD\T;ANF7H;/VB[UOS$PO[AN:OD@UF6.VAW= ME-ZM>1K&840A!RE15R88(PAPEC* H* IDCGGT.JV=&VBR">Y1=[SP*I@;U%?5"1KUOL!$<,!(J#0+,0?/0- MN\5USB_\(]WW!G_[7=T.AZ/8>7T<,.QX]\OA/!]=0&\89F"Q7S6D[DNRY'^0 M]3^$KN_=Y&8C)N)0P!2DE$< YA$&%),,\%0R*60&$30Z5/JGFMKYH=M!;THO M^E-#J66-W>NHFJF?;K#R+.]K(DN@]F3V%@VPKSW;BX6KDK'7)QJWTFLOPV<% M6OO?&*"([KN!U&.]%4LAB^UW??&="YD(*A #49R& &:(@)Q$$N"(HXSFD.78 MJ()W[TQ3$PZMACL!*SF)=@>R _(GG[;_DN>%ME,99S TGD^12[5>*FE8E7E918T M"]MP>A1XIO74%K/!@=M90$M^M71U6.;:[XJXJG;MB92!%*<$P!B&(!R#GYI:O\]B*)P%H;E_RJ7DKKD[[8_5VN=G?#O09+/ M_!JEN?H5-0^O#EU?9X'Z MPW/58G%AV:[G;%'-3H-;ELJS&*]7Z5NU2B5UL^!3":W+3,O+_#M+J3P9?N3< MRWPH,7;'GXIEH5U=^BO=F+:B!**4Z\)TB(0 EFB( MBB,IT3?;J$+#D/53&6+ZVBOT;=J'=- H1!E.(R"1S "460)P1C&(.,YUKW,: MTVBT9DU3#:FY=]$:R"# Q.,Z&UZ$QUX]W]?>D19NW#9.GL*(W-#TK].PJ2] MR>W@ VIYZ?8;FW>+U49\7_VQ?"YTJ;#2HFK=ELE@J*G)W(KDH*199VJ7 2_; M5?#'EX=/K3IXFUE0\F%1\,L UFYIZ0%1SW+0%,S:'1(X[\UD =>P^F &XX]7 M)LRQ5 #WI[@65 1&_RH_^NE:K(53,XB[DSF'#GXS@*&\S@\FY<' M-HHI:P+5 F\N9)J&/&5 B14.H-)K .4H HQG.&4T2GB2S[>Z2::9N#D:W4JL M[.?PMS.JKJQU:<> E*1:=G8Y L],?@R&Q/=]J*X ]LYUE=*+#+MJN'(T]KA- M52ZQ==8XY>)#PW;JI^4O47GXJ^B +V([1SP-J0P12"56^S546Y4F"06AR&$8 M,21P8A6P=6&.J2D#!Q+KE$Z[+7L)1;.->R,VGK=O"Y:*O.Z6$]:[N(-[1WOY MT@RC[N@.%D_W==>C T+CO[&?@N\6XEX^"/5]6&[)H_ZYKG?3+G6C)JK,'\?& M.4$3=7 S#K*$8W5-0!+D4:R.<9K04%(4)]+HFN"$FJE)C&^[IR>R?M'.C -# MY6\7>[7H?5->U76].:+N[SNZ*7BA1]#/W4M9,%$]H"XBF^!^MU6?EP/^;5EL MQ::Z\=LT%;UY_;LEV.BKZOM*4[.BUJ*]HO>M%;T[6]'*BFMAS/6P3!;I!&,N MUT@I!_ME4SOE^6@C/K]]+$""1(R0H( @=6Q"?93B&$J0$!B'D9 YCJRZ MH-Y R]2.SX:58?6VARR&F3X^$L2>S[)]%>X+"5E[[T 9IU%S$QS8\1*&X0!6 MQ_6YAU#R*J6Z;X#L6M7N6X8<1?FT%3:<2;3;2>)JR%6='ZK#=FP.]R+7*O;F7 M[S0SR^VZ#L#[6FS^\?9%__M1'0JK]>$6&C(4PDAP@#@, <0P!A01")! *(N2 M! MI5XG%GH:IR?/VU?381O1>';^;;<'V>Z?LAM+\L5;:JI2[E@IG:OVY91D- MW=5^%VWY>E/<\LGA'-C\_+E9_MD)7 M]T<7(;%0B$E .,8 2LI!SC@"DA">HS!)D\Q*BS"<=VJ[O$UVH.D.-.'M8-_! M2H3I2AA>I=SCZ_OZY 1:^VN2'5"NKD:&LXY[';*#XNP*9/GZ#>7DOJR6J\J7 ML'RL#!E-A8@PSUD&%S:Y/-GY]LE[& M+Y89ZW]K@-NP'+E6LQG/(Y$S"$@B!("8$$!Q2$"P]HB]?FWL+C-A"%D?QJ)76N(M0NL-KI)VL_/YXW[ *5 M1SZO2Y_;"10NBOF'Y;;8OGPL%F+]CFS%XVK],H^B,(QAB@"2<:3D2BP CF(E M7#A$J4 \3*11]<$KXT]-O%0D!B6-04.DV8:[AF"WU'& BV?A8P>)\>[K8;S# M]J'>K#0']<-!8;@VWBB;M(>99J_V/3:P8;=:Z9]D(^[IHGBLI#M$8:YW+N ) M%KJ5E 24Q3%(LBP/&16(9,PFH?!\"JN-.UI6X5KH=L1:_7VN*0Z4KO54#"D$ M?0%6LUO#;6!YWLT-<<&!.H>-MJ]R[JJO]OD$X[;1OLK@6=?LZT_>%G)R+[^O M!=GLUB]E2="W+^\69+,YQ"AB@Y#O#HF_55@CH, MH;@6R&'ZNKTG](ON;+;Z(E9WOQ[+ UA74[][VIIZ0Z^]/S5AHN@$#Q_N@R_J M?W>_Q%H'J54*AR98+#=U*X*GU?UI>3V>Y#)7_P,X8PC + W541U#P&@N8I@QPI%5 MVDG/?%/;_KH&1>T*5Q0')(U3NM 0(4?J0-]L MH^H'AJR?*@RFKPU5^=487T5C2']8KQ[7Y.ENWVJKNKA%0&& I

S%3"]43C' MU?M50QL;#R0'-1KBQ44Y_<9N]<']C-;K?B?Q4+W M-OJTW*JO3Z$N3U4!R$,[@<-IG2$I8YAF0,H, L@(!'F44'4/DF$84<&3V*J; MHMWT4Q-:#?5E>NV!_J"I2MI5R]#%:IA)+G\8>Q9@W?"VVET$/[RH5,. <]4W MS6[R<=NH#0+FK*O:L%%N]?]^D++J0KJO4O-572._"LU[L2A*L_I)!3P2A1B& M$0%92 F $8\!31D'>9:FF @IXMRJSM8MQ$Q-!K:+$%RH!O6^4!SJ*AYE2FAU M9FU*%\9.5ZJD+P%Y?EZ\Z)B3O_W;MW\+/@I>-D)L#:41T3UN'M9BJW[]-*!^ M[DVK;^N>]KNFOI7&UG+N&3E;C6-F1G)H#\?5N9=[ "FOY/H>#MIU?_@-8PXM M(E[/4VN_VY>[OXK-/$EQ'/$P!2)C$D">*SV49QADG!"6(I1)GMO5$;\TS=0$ M;FLO[NFTK29^$4XS.7<[2)XEV"5\@A^:2(=2J1L%9[7%+TXRGMF7+. YBJK2T^>[>DP-9]KP!>[FU"DHYX6]0#$HS MQF@A)R=$MR-,3C\:V "P75I(EQ0ZU/^*YFD8L8Q1"E"$U74EY!+06*9 G98Q M890@&%F=BUV336VK'9?;6I>UM@YENRW[ ':!;'9:NH+.MP?["+6J0ME#/VKV M;?X,X'#5W:]KJG&;^ADP?=;+S^2=FWJ'#BEQG1&):"92D$") "18@CQ/,I#1 M6*!(BC2)K!KW#"=EF?%]6M*ZKHY;.N=*G_7FX)&;9Z',,D@QR.,R;Y!30+(<@82GE)$\ M4?]G%=?;/=W49.">VF"CR9T%FY+@@!R\S6^*9?W7ZP4UA@!O)@[=P>G[!K5' M\EN%9$5KRV_O,.G0"!17"8C=DXV;C&C$^%EBHME; X,1#0RK1^V=]\^)S3Q- M*(&81$!PEJI;'\Y +L,$I)R'F$&,#/L;N"!F:J*I="UMRI;F5?O%8*O)+ LC M:4^'K+U.VK\D2KXM@QQO63@SX376Z'H%N$ M;5\^+96269;PV9059;[_),O[YU+__%T-L=U\6JJO;;'B_R&*QY];P>N\OO)# M'0('*8F?"QTQ^3/2D4Y"UR\>UJMM\4_2\9J MJY3.5?NHGIUGDO$$PP1PE*HS7:)0VXE"0/(PEQDC(DDBFS-]&!E3.X#5[LWM MCMF!\)N=B?Y!]7R 50R DH.SH.E9:3IGVRKQ8\_-K,I9U9RX.UUN0]+143"0 MB%'E]FU G0K9&T<;4$=7W;]T@1SQ7E3__;2\;VKU?M:_;^8I3U..$PA2GA$ M$\H!@5!)/D@@BQ%!$!K%3YM--S4)MRV6ZJY!\RS]&IH#1IB ME0@+#@!^=@^@15U?IT".5.UW#RAO %47CM7)-])5-6!C@#IK!/>/,E[E8&.. MCNH)F[]U:S)+DT-SR%80$:.,4 )B 2F 3'LC1

8:VJ" MMIV[<*=-B/H:KK[N#>%#+Z*^Z"&.YWVXU2%KF24/.009'I0JDU&670Y$!G$("<)PD$*608KL, M6_.IIR9^*E=![>S6WN^:8"?]FRY!;R9R_ #J6?I<[^O4 M93\0![P/RV?+HT M\13:/W4 8M@*JFN$88+K^YIP/6PYX1UC9=+Z5\%$\4NKQ56AJ#F):4S#" *< M(PP@SF- ,H[TBE!*$TF)L"H5;S3KU,150V=P(-1.4IEA;2:DG"/H63Y= ,]O MD3@K@!S)([,Y1Q5%5C"<2B&[EX?9TR^%M7\NEN+35CQMYDF8RIB'#.!$$@!A M @'),PXBF$9,4I9)9"1XC&:;FL"YD 92DQS\T$0')=4V7=YZ\3:SL3M#T;^) M?6P [6SLSH ]]?2O6A0Q* MSZGZH?E;/>-1!,N2UP1L+H>XO%MMMO,PC!$.H5"WVU1)[12J*RX,.2""Q$P* M"C.[:B4^B)R:L"_-$H"647:L'8TGAER*O2RKF6;ZVHOE^4QI6*FJKM35#_7/ M^P\^-*VHCX(J]36\87067(V]U-RZ4X)]KH4CG=D+B:.JV#Y!/M7(OO6KX(*_??G;1L?C[-W M7NRT $(N8QSPC* 4,0 S) $E"J]/LR) M8#GB:22$3;-)\ZFMI/T(32AUL7FF2 ^>:]IUH/7!=$?VA-N)?8NU,!/F?A#V M+*(UN)KJX*$%[AM->5 L?VO%V-SUPVPM53S: W(J] :,<%NP MR4IVA!9^W&UW:W$AP/"DEB8B>9I&2NN%F"< (B(!SL,$9")/(HH(3D.[:O<. MB9N:\OMALRV>2!FKNUSNR.(H9'=_U?PJ%N4SV]5YB>1A 2].%MI,DK[6\GF6 MM>V0FLYX;*7T5MQ=7MLQHG!<0N\X;,<)::\2Y^,2U&N!04[GL*_,^&&]UCJS MSLO])=8O57,^PS*-E]Z=G/1=KU=+L=IM%B]58M_II;2AWKRHXT7(N@6E"[0\ M"SMCH-QU/.Q#95"1R(L#CE8QLHN==OG(SN<&.)O,:CG_U5R8/Z[6'_YB8E-= ML?F.Z<\_*DY*2UT3=#O/E#X7BS@'DJOK+%33 IJ$$H09B5*%Q2 R?8ZRW3M&J7 ME']ON P4FT'%9VT1K3D--*MU1_B[J:RRA:?NU5=[)/?>8=4/I8."M5[U]?&J MZ[_39M5UXS)1K;K^.]^O>MD'XWAONTJ_\;HBG?Y$/S./YX3TBMR1Y]+O3 ,3 M JI4^\WWU1W[[UVQ%F5HRZ?E+['9EA_,>8@B2' .$ LC #$3 '-"09KQ&/)4 M2A(RL_/<>,[I'<\/=2>VC3Z=BP.EEAD O6";F4[< #A2%D!-JS92U=0&39QS M/XSV>0"FT+C*!.B=;]Q< %/VS[(!C%^\+:Q"^]4Q3B7'$08I$#J ( M"< 2,Q#&.$\3FL-4A$/"(MJ33,VVL/>*,TWDL""&(Q#M@A"&0C-6$$%)WRSH MJZD]V/%_B7_'CONC*5[%\7Z)R6N.\XO/#F[5=)KZK(7(WBWUCCP76[+X(M3. M#R/,4"8 0C$!,,XS0'.9 X88RA,>)DJML%,JS">?GG91G8>D:FVIXV*4,DB5 M1FCO[[98 C.YX1C6D2M)O&G(_DWG@EFY[6.Y]F^ ME!\*I60^/UFWS3!:$02)R.,T 1$3$, HY@#'<0@X#N,X3N.0)U;5L%VOQSAJ M9M=J# RA-<#>5!MUBZAW[?1 [BS8$USBVB;9I;IJ#I S]=5@RI'567,0SM5; MBW?=76G5#%\4<_75+,L(%E)B0+-4 "@% R2/$L 3E' ($\YS,7\NZU9^VY+U M=O@M]VA>FYUS.KN_3?26J%^9F 54/!;+I5; U*'P(LCZ]DOP,>Q00D9)E@(> M0?(0 <@3*)@0$@M>P_YA:7B]\ !Z,_<(D LEJ#R!/=S\,!B^46T1 M?DT0%S'P:(\XGN_5C1,7V3>Q5%Q^T3Z2J0Q:^?[T^+]7?_ZQ?"[>+3=<_;Z/ M9#2,:>H>96JJ84EM\+UX4B)X%BB:@S^^/'S27=0VA4*MH\&0+7S=LL$M'I>;%Z$:(.M6[9B>:)R%.9 MI3G(>:[4#!RJ:R94N@9$5! N$8PIMVQ!;SSYY&0*8^O=2:+FK9;+#NB'VB[= M /HZULN&]GW4_V<#([$#+J!E"0Q<-J4Y17X*:++(H8EXE$@.$H!C!,=#,"CH!,\I3*!$O+JFLFDTY- M:NUIKI,U*JJ#AFR3%K+#%\!,AKF&U;/LT2QK"@Q;EE3%9TQZT MB/>R88;AYFCK6$X^ZB8:!LSI=AHXRM"S7MUZ?JX6ZHU-U2IIGD*24X@$8(2J MVP@5":!1DH((2TCS7.8YSFR*"IQ/876.CU \X+N>HPJLKNG\?_Y''D?9OY=N M1M/0^@Y(*>*$XC0&<804I#F-%*1ENUW!\CR/,Y3E]H;\VX =T7*_-]C3RJ!\ M,YZ8T SEB(.8Q!& ,8I!+F $4H)@FB4DS!BSM="[0-._2?Y#543<%9"F2N0M MT'@^#"N"9L'==KLNZ&Y;ICUO5\$#<1L!>!T$9TKAV00CJX#7&#Q7^*X^.>P4 M4D?=DUB7>B-1.^D/\43%>AY"2E$H*4A0E $8X0Q@GDF0A"D*,\(XRHW2ACMG MF=J=\D!D\*RIM-OBEX$TV^4WP^-YH[>0*0D,?E0D.M1L.R%PM,TOSS'J3N]D M\W2S=S\\(&WX7LJ"B0]- )?2;3_NULM"%QVHOZ]"RCB76 ).M3VX6#NX!]"PE:N3V MQ :*VF!/;K_,& *A1>:K4RA'RF+M_C*ZRD U1J8SF[1_E/$R0XTY.LKR-'_K MU@9P'35@JOHB24:3,*$9X"+% (8T 3B72&EA84(P)B2D5@J8^=13T\KV59GN MFZI,P96J3+V52FY=%,,KFQ>H?5O_C6M?N:L',QPPYXWF>B=^I;YSIH!<;T-G M/,+02%JZ_2;8;EUZ/^]^D6*A1_VX6G\C:AZF3LE=Z2/]?;W:;/ZV7 NR*/ZI M?B7%\K/ZRULA5VN=3S\GC.4LBR*0<"@!1"D'."$YB%DN(IEB1*%57Q9GE$U- M(!Y(#32MF^"-)E=L?IL%RX[T)\_+9R8;7V51/(M.S5-P8&H6[-D"BEB@&5-_ M.[ 6E+P%)\M8K>)O.L9:LZB+SKB,7W4,N[,X5U=TC1P/ZQC.\[A9UQ,XZJCP M=[+856ZQQ6+UI[:#ST.!>"[3$& 4A@!BJ'Z"6("4<0ES&1("I5T^L,&L1MM_ MU$3@SV*S^5_!KX;2@#2DWMCLX +BIJ+6#8JOV(I@3W%PUXOF[?T$KN/CJSW MA1E?M]K_=0AZB_=WO#I,]GP5F^VZ8-NZRVECGX0THB**028I!U"(")"4)$"D M*$P@8C3-#>V3G?-,SRSY]=N=94&!RP":"8^;0?$L+@[TU:7XW#LD.B%P)!$N MSS&J#.AD\W37=S]\JU'LLD3) MAEBF ,I(@#SB%$0XBG"8ZK(E.-QCV'&'NW.YW*UVO9!9T M!.=UJZ&K"8:4MJYS*\H3IBG>^*"^][4"PU#*(X@PR!#1H2EQ"HB "8A@CB&A M-!+4*/O!9+*I">X/WQX>;(H-]T!IX']V")!G8;A/LJH4PH;60!,[Q/?K_46Q_OMNIA7P2ZR93[>6K^"66N[*"\>-2FP[G.8UYDB08,**D*21A###/ ME0J=$Q9%<<34Q=LNY,]F^JE)VKT]:EU1:AL+: 6]F0;K#U#/DKDA//A341XT MI,_V6; OLZ F/SC0[S*R< ANSD(.K28?.19Q"##G08J#1ADFTSJ\V7^0_UJM MWRW(9O-%?1??KYY(H8[E-($1RB007%( D[.&9BSR/DGN6>+=K!CXH%AS?P@> Y$GZVLX\J_09" M/OR78UT]U>QF6=8"DHB""AC","0$T QHH G M*<=21D@PJ]J9'7--3:X=D1IH6@--JK72=A5;8PW-!6+^U;%+8 4_-)U.,SIZ MT7"G9%V=:6R-JH_E"^I3[RL#'2O:/D<[;'BU"8^>FO ^DF*MW;E:C.V>GO5; M&]V'4OM]OHOU4S1'0E"1AAA$&&7JKIBD@*C+HI(W)(5A#$4$[2J0>"-U:I+J METI,P"S6X9O5(J>PW#LZ!A M.= \._2S>%\65XX7?X2.ZXGQ#OB9:\;_C(/K[JD;OPXZU/W-M#&@6.Z*Y6-= MTE_-5@4C[ANG"36].N[4',62K%\^;<731A<$U6:$U4+-]*CT:*$V]'8N,"0\ MS@3(0Z7'PEC]0U >@@R%"5,GCTBPM"F'X9%6JW-FA+H:=:O+.ICXT )Q0%<2 M;\MK=N9,9-$\'SKU>E5!X%6WR0.KP8'79D4/K4S+MB='[ 4-?TYK"_I>!'>E M"+U1.G;E0M^07RATZ'U*9T7(#C;E3UP==H4LR-[R4C?"XW?+=FW&\@04O!6Z MVBY,FLD8)6&& ,Q"!B""$.1Y)@&)XPCB6)TV*;*+8_=/M)$ &S4,?N\W:W7= M7;0[-%FG*(VP]&8'T426\_7JW,U:[KF@S7"3&=JP?-J7*ZBYU@U86F'^7JK@ MCK=*_JKJN2;XM2OQ>5H @^I]OF8>=HK]+E:/:_+\LV#OBTU5,DM?XK2!.4UY MAM)0@C3*2XM:"-35AX)(0)IA3F$81S86M>M336^'PQ'LJ]CHE%E5C_#I[+&X(V!7=WK5GLZ#$Q7(-E7(VEYHR!" M.)=)#"@G2E5-HPC0% J0D 2&B,9AEL4VPN+_Y^Y-=^3&M7315R%P#^ZI H(- M#=34]U=ZVC"NRYFPLW:CKW\$.-KJ$QG*(RFR*OOI#ZDA0C%)I()2:E]@[W(Z M+9%K?10_+I)KT.AS::SQ)=O^;&[6'X_NU0W+NFN@K4<@EC&=2PQP ML5777:/'>2N[ZT-P5MO=X-6Q?--8.I43:G6&7'R6-A!GZU!$'A-!!#E3MWQ^ M0*5-XD>J(FT]G]>@:(2%J25M-7]7?T;PPN\'K!U M6<8&A!.3RP&][S5ZM9R@%M0FM0R!88U1KG8T,Y$,*7S.'X-OC C1:3='C7?G MY^U+EE+9!R__?/[$N=S-L(10H2HXNH&JJN2',,9Q !W"0\=-! NB1#M&9ZBW MI9%'*R"0RRG?WA">P4;FB^'1U>O:T]PCW@^A3P*)<^B1.X&$\>'$4U(3/V M<\?1H=B!?I9&KK6HH)45U,*"1EH]GAB"MI]@+0(V,;6.Q$J; S21Z*ER*5NH M[2_YP\'L&FIW%D+05*ZE MW'1UA;[;'V!U[0/*T\>!ZR34I?Z_\>:K8FW&,A M"Q"D2: R*#JQJE[NP%A$%".')(CK1T;K]KHT@MA?7'4$-S ?M,'6L,*F@'"N M:[^.S* 6%_QH_M0IEGL#L ;VV10 SV2G[8%F':"?*[%M66>FZ/1::=J-S6>M MF>IW9+49OVPI@6*5L''MH$ANC-T8^C@*($J2!*K],G1CAWC8<$IESA<_+K/'W!>-G_IU!.L'>U^RD6GK4E?+3[[(.HU MY7'H,4D7KAN$$ 4JLL^/$&11Q&+/"Z,PUBI7;D.8I=E[!WD![0H,\J;6=ID! M?%#/P&*Y==0T+,09QV)BOFJ$!_>YJOY6@O;O'6U6H#-61PH=,D',.#P&=N:, MPS23^3GU<)E9JI;P[35@;^UC/KO6$AI'YJZM-M_>>_LK+]C;\&X[:7*UF M=!QISG'!/_#ZS\_;\U*WW[+-YE.6J[#6M1N'L1"!#[$0RF%:U?7V,8:>'U$G M201"06SBG&38_]*V0:WXX+=6@=]!N@5='?XGJ+4 /Y0>H%'$,&VSZ3#I4?F$ MX$],U1/@/B8XFN3%]X M79 R+SYM#_Q +7JMST(D1HJVM&'VT@T.F.^SHBRZRRU) M7(\(KLZ'N0>1SZ5]1#T'!BXF% F44(\:.UZ>]K(TYMC?E52"CC)O^E'5.,FU M@=5<5TI3P33"L_(6N.;VJ*QDM>PY>4U_+8_)LY?G]Y2\)O]%#\FK#X]@P)ZT MFYWRB+(CGO[RW>&4C1#2=NA+#M#^;.J'+Q1 M2:-LN8W91KUW*;/6V7Q+GVU\CI9*ZXV;!QU\:&; I[2@>// \S23'=*=G+H\ M8 C+W82(N+IVPS$DW MAX+N1Z[/$<[G6YJ*WEZ4M?:V@H)84U**"2E;]<(/K MH/8O9=:@FGIO,08EHT"#011&A1E<;W6V((-!Q;HA!L,/C["E#V7?),=DN\H5 MH'*#37E1EUB,78Y#EWG08TD"$7-5)+@3P=A'E*#$#1VA'UDPV-W2**!;+O,@ M,FAE-JM_J8FXAH5K%<>)^>$M(#2P-*U".9,)>2ND9E:A-D*]YMYP*_/9<=H: M'1EH^F^-NP;_PJ6QQYN$F]N?7]1MT]X-J\GK7'S8\:_\[_+Q+[YYX7]DV_)7 ML7:1@XF/,'0)\B 2G@N3R.70#[T$N1X*&8Y,[L/'"K(T\I8?(3*[XAX]!'IW MW7, .S&;URJLP%X)4&EQ5-&MS #AX &G; 7^D^,WX3>W9[OVVY\%%[N-*JVQ=CR/)CR)("4X@"A("(R3Q(>2!!/' MCUS'][5")4PZ71KE?2S*]*DZ.]I5,E;'3(7R^CP[:;)5X*TS GHL:!O768Y> MKY1R6X%:9J"$GJ-VVSE$DQ=LZW2YD"IMYR#HEV:[\*ZYJ\[#RW-E\1F[YIR] MN#0"D1P.7@IUB".R_ G+@5+Y1NDF*W:Y7.4KX?6=<(FR&:F LNH%/O MM;0BXXU<;*[",,JEYKRUV5QHKBK2=9FY_M"T>REEGGZ2G\>:"=^-_)C#D*MC M+H(IQ%%,('6B ''!PY 9&0^F BR-!^37$TVS=]I#;G?/- ;()>Z5E [S;Y9. MT9MYD[3O?I&;HU-PQFZ*SMHQ-SP>G5??NZT)[][NRD!L/-<#_P=.?O^2>_.Y%,L1/_O%O MGM.TX ]Y2OF:$R?@@4-4OE07(LJ=.I@)L8"%B# ?.6S]7-WV?2]Q7NJ9'S-) M;S*93G68;EZ]XS_3[5;-K'=X4QGI*FLSRS8;G!= RE%G=###''F)_#-H/HB/6\UR5(O]'%H-)CP1JZ3^E_P2] SD M!8[MU#?*MU?IO6_+\G:T7X%6?] %H$0 6!Y:J]\XV9S1*^,T@]?SW?^8;B M8G'?&;NW:0RM$^8A+TX(#$E)J>?H>07V=[.T_4H5_PFK M:LN =N2TL8C@]]7:W.6W6(56/>EM,3JVS,.$2B,N,9VZD!=G44U;' M0__!GPC/52T[%+"$P<2ECMS->"[$D?"A2TF0$.&),#2J&W/6P]+(H!:P#OHW M(X!S\/3F_DV03#SMNVB '[5X%K,=7%7=TK0^;W_6&7U5O=/)?/W!D>X535"! M 0"U?Y9%?9RIB .(Z)&_HN M\@G6#9CK-KRTB:=D THXH*33CXH[ JM_YMT"P=3VKI[V1M%NEU0=%>!VU-!L M,6V7Q.^&L5W\]['UL>X8D\-9/&1%B3?_7_I83 Q.,A MI!%WY43D 45:Z0'[NUG:1&PJ/C6BKD M+)#2&L[,'F2'YZD=O":>M6.A&E$= MJP^)&XIC76QVYMI8?:J=E\;J?=HP<#4O57%DMJ/E??Z=YR\IK:MULX )P5T& M71PSB'PJ=ZP(NS"B,7)QX#%)#%JAJE;G2<>UK:K/[*2_"Y MKH\D9:TOLE(ZGH_LYY+#:I[>C@U M_,+HI.!R"GPO<5G=&'Y1 Y5FVP_9$TZWZQB[/(IB'_I!F$ 4Q!22!$MVH"QR M$H_&/C=BA][>EL80#3OLI06MN,;YO'L0UJ,*:[A-?D!V!3+PHY;5;D[N84SL M9>#NZ6ON?-O#:E_(KJWQTJV9K&K'>Y5RB0>,,NHBB!*JJB]R%R8D3J15P;#O M8$H=[(_+8[7O8VEL<9J?J8DRN2&'U0'.X0,!"R!-3 TC\+DA>]49 A9R5QW: M?*/,56=*7<];=?[H;=55KWC-_4=:_CH<['?NR[_Q0FY>JCQZGW;E+N>?BV*G M/(/7L>L0X8I(.:PX$(6JJ@@A"12>@QAVD./%1LYLUB5<&K$TSAY%Y>R1-U*K MG)5 5'*#M!&\'I-977*?_DNIUXI!4-<". M6\^W[DC76H)63?L%:JV/@.7:MO;D>Y.RN-;AO591UWY'([(=WF_Y8_K$O_$7 MOMWQHG5T2IC +DH@9HF B&,.B1]R2#ER?>0EH7"0=H;#BUTLC;FED+"44DK6 MKL4T2+YW&<.!@V,KR$S,BU(^H 0$K83#KDVZZ!BD([P9I9E2$"JTCCXA6SFH M>P'HS3!X^VJ^-H=SD;@DA'Y,&4110F 2 M^)+/DBCQ/<1BS]7CL].6ET9CC7#Z=U['. U?=HW6?F*J:N2RZ'MY5=L;+K6. MVYOM-NNB&MUKK,L/C-N&GL1COI'JXK%X_.Q*%K:V!EW/^N^;2PXI]NRT>V,H\F'/)-3M7Q]D!]= M>;=EJFSFL[)25>G_@4.CR4^R\W1# 6KH"12)PDN2'&_QM_EM_/+ZS2!F0_<_S4> ,$)"&A%V&8L%AR-$TX) B%D!*/ M4L0.,;ISQ]43O-^1[\0>9PZD@OL0>9X/ MX]!%, D2'KLJ=5!LM,F[7:2E$4A]NUZ+#%J1#6V,V\=)TQ*9%?TY[)6^7$6U M(JO]H$R2\]T^M+8,G]L%FM<\L@;@F1%EKV7SK U5TK>/?^>TS@VIF;7A^*VE M49YF>L4A+/HYZS88)N:>2C#K:2:OJSPJ=\-)4[/E;KBL0C=WPY4G;!>9*MZ] M_H'_*\O?;W!15(&2$?83$1$,483D!H^LC%2H/:R4_J!2P573J?$3T#)>)<)Z8)8P@MA;O>@-FD]>D.N]Y(:6IKD*B M7Z'J>A,C=V]M=,V]>(^+7Y\VV5^'XP6/>(1QCT(_H!PB=4D4\XC"(&2QZR1" M^&9>[WV=+8VY#M%@F0!*6E")._KXIA=HS8V5)?BFWC*-1\Y\0Z0!B:VM3E]7 M\VYB-)0^VY[HO#..0FI>VG_+81@XF+J.9(DPA*KZ,$Q\)X98FCX\813'R"@U MY''S2Z.)N^_?/SY^-Z."$\#T)O]X&*;>I=1VQA2S^[+.EN;S2>.SSN#+BIW. MV2M/C3P>>'SZ^(5S$ M2_,TX5:H9CE8N(R2Y4P96I",/WBXV.J\9Q!]BIT=1_0^/&[Y_4>6L;_2S>9N M>[97.(SJ?K%)1!0Y$>'2D/?DZLQX"#'QB?RKDP1)0+U0S_]_5.]+8XM6^,I] MZ7SKW)T4(ZU^L\'1LP0F@WQBUK&*MK$M,0HU2Z:&6=^S6B*C8#DU5,8U\RU]?(5.230[S0B.P,^EX:U7WC>)/^-V?@IY04_":'I/@=J,]!16I7F=MIHQ7( MY,]JUZZF:;I]X459U2@%O_B&C4MWKS-6FD>TTXS U,Q78:ZD^WT%VDSYK0Z@ MH\0*D$I\E4;??LY\ ] LI]+7Z?E-,NP;0'(M\;Y)$[>E,Y$MU:3ZE9=[FX$' M7 B7"!B@$*F*D R2V/.AXT5Q(K],-\)&MVS53017R7^&^!*Z'&9 M1"X"K$=,MF";F(GVB%5U.BI!*V_]24PN'4PL9]RXV-6;),_H4_I:'HS>=RQQ MQWWYB^=KWPE#DK!$6D9!)"TCI+(C"@09I32.,$9,+ZU%?S=+XXM**,"F8HT: MVI%\80S86S!%)>2$!'$$PE344'?RMJ1PI.@@'1P_?4O*5-DD+QYPRE1$&H_< MB",_A-A'D@0BUX<8^U2%\?@BH0D2V"ANY[R+I1% =1OY+&6K\E,=YK]NDIL> M,/6F_6T033SEFSRHE71 B6#FUZ<4GQTUOV8+Z MN!_R["5EG+U[_;-0OB.?TBW>4A6K7;N^'!W3#,QJ1CCI@E,C+H>%:2,@?DE+Q& MM'#;YF7/EOO=T5H$#A8.]2 /E*,M4B06)1A&E+LXC!D+S7*\7^]J:3:,[4./ M"^":;6%N@VRN;>]C?RUQ'P_)^YD)';[*GN:[PM7U-SQOC2XVG]2W% MW9:]S[:E9"$NN8AW[I\.3AS<\43@12$4&#&(. ]4,N< >KYP.481\;F16ZM9 M]TOCDX[TU97/D?SF5CZ7.5P"F#"0@RY M&TM"(ZX3$ZW*%9K]+8W"]N*"VUL5I82IUO.VO)_&-T^SG5OF0 M/? \S>1S15D^[6HD))I=T:?Q3 M)89H,HP<55WY^+?ZV3![\70#K,=HBQBVB4EQ,"=,,W*LWO;AY[2LG2]7X.XI MV\FGY\D1,]$(6$\=8UO.-\HH,Q'9]36R--:6PNYJQVB5?5Y*#1\^WH.O\O]''/XIR\IM5IK$GO5"V4_"5E&< MF$0- 9PB+$T'J7&A:;TMSQ>>IJ/@48B:U@N6L[PW&Z8@]$6$Y&XS]D(.$7<0 M)()&,,85H(-NN]E&_LHU\OU#]E*]K'+L^D?^#./8P M1!YW(4Z$#QWN.@3%5(0Q-O%T&NIP:?Y-=7F#S4'J:HH4';G_[_\K]MSH_ZFJ M'I@F%!V$7X]O;((Z,>%\.4'R8S]JQ@2C"X4EAAGL;E:*T57^E&.TWQN9W>8% MIQNU6_^4Y=_QAG_@I/S.Z2ZO>WS*\E)MJ-162NZ]TF*-0AS'020@$XXC20?% MD#AA##E/DC!PO9@(8D(ZI@(LC83V$@(EHF&F'%/P]2AG2D@GO[@C)3C(N@)[ M7:#(%WM9VAZL#@_#C7?@-MO" M1E STKJ,J!XSW8S3Q/130[1WH-R+:(]C>A&P1"27^YB5+7K5/*6$_H?-CVL? M.,__D6>[YVJ#4)T;UR;3MW)[]U3J'M@.-+.TZ:W$!96\H-X8=20&WWBYR[?- M_8S^:>T0DL/GM19!G/JXY7;\C,YG-9$9=4([U/9L9[2:2G9/:75?N:'2V_DM MTN%Z\]WKX9'F]K-*;?8)I_D_\6:G$O_LGNI"!]_2XG]]RCG_O)43G!?E-USR M=8RY\),@A$QB!5$0(1A[00)C$6 _X22*:&Q<+FY*B9=&9$I&**20(&VD!#G6 MO6.:;YSU+)Y%C=[$#-IU'#BZY>JHJV+C+CH8*)U70&D-*K5!1^\54)H#I3IH M=0??^KZ)<=7TYA@GFR7Y)I5W_KI^<\!_L3C@+!U;+\SQC:L*ABH@L=XT5Y+7 MG@_N&@4T)CQ!T(D= E'B>"H-0@ )5S6/F>LYH5'R@Y%R+&UM.:OUOA<>=*4' MM?C6*G;T#I7>0C+# $R\//17\EB-' J;)3UT@)R^O$>O%$LI]:$#E4'9#ZWF MQC%HZV L6VN9/*5KS*CKB"B"@<=BR8]!# F+Y'\"05T_#'R?&?EC7.QE:>Q7 M"05^2[> 99L-S@OP+/>VA9+W=S.NNPRJ'I/=#-7$/+6/!9 "UK;J"E0RVN.@ M7@@L,\5P@Z:I]=)6B] M9$8FQ7-!]\D=*I_R2]'^KAM2PET!(UN2/P@IC$,8W6W$L<88LFW, H1"^5^S@TC MQZQBXP@IED:^K:"UYRMX;D0%S_*I-K6?H>_KN-'1O!&9&O.I;SDJE&L%0*U! M4$0QQ0RBJ7M*?>N4!7"@K$;>!&+ ^PD@5%- MRJ$>ET:!>X&KQ,>UR*"6V= C=Q!K/9*SBN#$A-8#WD2YN[31L>59.]C?O*ZT MNNJ?^:'U(A+4&N>C4/>C9K=6FT4DL/]N)W?!+ M08'5B#!H0[3[26=:H*<^;3?$>()(Z7'8C7+,,^QJ-C^]<1!TW?9&MC!R]XA5 M@HC*T/HJOZU[T2E/]2%35XGKA 8^BMT(^@F5-A%5O@]1E$!',.JX012&+C': M*@YVN33V4A*K&O65S(;[OV%\-3=[5E&;>F?7!0S\J.6SF;I&&PQ;N[/A#N?= MBFD#<+;OTG]SA.F3Y\KYZVZ+-Z]%6I@;.5?>7QHA2#FS+<]VQ8EW9B.W@?5R M#3 -.\4"5E-;)/TP36& #( RSM2XUNA\1L6 6D?FP]"S(U.GU\%$33'+1_QW MD[OL'=]RD99KCSDQ]1T*F1LPB%Q.8.)R%U+ANB$F$8GCQ"A7>G]_2V.$1D[# M-.@#F.I9!A:1FI@/&DGWE6U5C85&6/!;(^YU]RGSQ.9ZP-C*9#[0V[RIR_54 M/\M5KOG:S!%#][53^,>_>4[3@A>?&X?&*J[I\[;,TVV1TNKH>.UA)Q%>0" ) MHQ B)%R8!#&'./&%SY$7AI[9Q=8,0B^-S/;2@9"-.H8>W;,, MO>9&:F$#.O56[/90HOLV=FBO.DBW^YNZP\=2J;Z 0*(1 _76L40F(O]KA!.- M& 1K$45C^C;?[#[F3,KR89?7'D&:6]SCMY;&_%U2:&74W\V>(#*\AQT/QL2L M^9AC5L7/F.!AM%.]K/JH_>E)4[/M2B^KT-V+7GEBA->HJINCJIP_\OSI#_QW M^K1[6@>A%S"/^9 +3.26,V:0>"&&S/&(B!(W\A*MW#/7.EC:Y&Q%!+*S)_!4 M"VG@XG@)P_XY:@.9J?>4+2A*//"'%5 ,7#UO!& M?)ZYX_97_(38XSR)$Z@<'$" MD8@C&%,409\P%,4Q\A*J5:2TIX^ED5DM)FCD7 $EJ<01*%GUIF\?H/VT9@FF MJ4_/QR"D/7$R?E('\Q]>'SZI@99%*@'1/A7J0&MXS MW [2Q/.V#Q_P0PEKJRY!+Q+C"A)<;G*^2@2]*AV5(.A__@UBI4$W/ /E#A(.Q*E2\A'#S@E*V DA<\_I59+#J@"X^M ML@.#_$!7_;/2 ]HO6N64QU]I7G_]U$L(]B6E)"%%$"'BR)\X@0P+BC$+ MF:^*#]Q,*?L.%\@HH15&.4!Z$Z&, FH9?"*GML4+&%U\IB640W=+X),SY37I MY/P]\].##\UA4>6QEZJFO_'G+"_7//"#4#G;Q Y2$?-,0,P]#EF","4^$\+3 M8I"^3I;&&JV#$$PZOC@:J.SG1\, MJ=4]0!A\=OP)PH/<+9;YTW;4 <+1RTN;N4?[8R4I5_<9JH*Q^>G!,4KZAP>C M 9KS[. (FTE.#B["<-/!P7&+LY\;7%3HTK'!Y0?'6?C_R#+V5[K9M$O_':4J MN;G*P;>O75FL7<%CYD4>C)D?0"0B 4GL!=!/$HX#+Z 1-SHYT.IU<7/_(-H* M_&PT,#/^]="FF#-53QR&#@DA"@,/)G'B0"9X$),X%+Z#UR\\)]F;X=WM?3K$ MO_$GCE6^D%'E]C;'\W$(GK.M/RNU;!+$75'^-!*<^D?]JY+YL*,#2%HQ6 M?G O0*L!Z*H WKUV_PY^5&IH9OX:/4QZ1#8E^!-SVA[W[ KN*^4T; *\N?_O M2/1L^?*:=C^O7^Y(<,Y\;,>V,S()?YOK_UY\2K=X2U/ED%N4>;6-+AZR34I? MUTD8)5&<2/ZCB325?2*--QP+R./8">. $1X8%973ZG5IS-FUE'<6(*ZP H26PO,NC(+"VV2FKPH_ESDB0]1L#9RHJOU>>\.?!-8#C+ M>&_T\@V9%+_Q=DOTD&<_<_QT2*B_*W]EN2JI>7BF+F/FKCTD$&<(0>YP"I%# MJ=SF8[G#EWM^ZH7,C8A1 NSQHBR-QJH(C;8045NQM,J/]6E7JGRM!PU&9%8< M-UJ:UMLL8S"U'5=EX#A("!HUCHJ$[#7I/FBK0I\].&UF6APGR/SI%F\"[&+. MQ=M:',>LCYS^VF:;[.=K%:MU6K/D#_Y$>+Z.><(BQP^@ZSN1)%$?PSCT8NCR MF(O$%<)UC)(O:O6Z-+[\P%_X)GN6<['7AI3=\0#'[3+JE[' M9OCV^F98IB:#"U&SVBB-B)Z]@L0-0;2G+8.)$7&I5B'NQQ M:9.]%0\\U_*960C# .M9!U9AFY@,6EG!;ZVTOZNT(7L@'P: -+8*M,&Q9!$, M]S>K-:"M_JDEH/_BR,QQV=-3MJWVGM5A4''89Z[C!'$F(@I9@&*(8I_#A#$$ M?>I$A. XEG1CE#7N>E]+8Y1:U+K4R*HN'5D ?#B*4<4EZ]\:5I3LPUN/9BRA M.#'!- !^KP&L!>V<95G,(S<,AZT<:E)6=W3UE> MIO]=G03520[7DH.2*!()C#R/0D1\#R:44!@$?A0Q%''JBA'U7+6VE?AW2/<"@ZZDC?98J=">%1M M7KM(SU^G5^N;ME_)5Q\VS:J^&@V^185??3VO5/LU:&!L)KF''=FD]-,FP^6: MA0X-,79@2-0&&+L13$+"Y7^2B(84A:&KY31[L?6E47N3&ZV6$%0BFB:-ZV+7 MS] W(S(Q"YN ,2(_W 6E;\@,UVUMYIQP%Q0YSP9WZ:&1B5_R3'*P;%$.5GFW M9:JNVW.5HYH454[)-:&4NZ$G(*:A4,[N""8(!Y"&##E4^*X;:%EJVCTN;1JW M J^J@LXEP%L&]D*#'ZW8AM$\P\#K;2.MPCDQ!]R,I'EV&%UT;*6'&>QOWOPP MNNJ?)8C1?G'DH=4A>/$Q^Z:R6-%TP[_R\O-6VHQ#"@-FG+U[ M_;-R +J78N$J_+&N="_WK/L)PQR7$1PBR# /(7+EQA+[/($D#H0?$^R&PC,Z MX)I R*616ZM66MOCF0!;7H*T4E#E;E)_HU+%.AY;ZJ@BZK)6/X#W"AJ>I4TQ M_IKG;F\\JA-S;$<]-7Y[!8'4$-0J@M^4DK^K?U9Z@H?.T/ZF=)7C_SO8JPL. M^D["T5,.B*U#P2E$G/< <4*0SPX;I^QKW'KSC6]PJ>JOR#6M4TOTP!U!2'T: M$1_Z<>Q!%!)I[\8TA#$5F,E-:>QC(RMWJ,/EK0.5O* 2&'0E'FWA#F*NQ]V\#T9@X=9&Q1(*#WWN(VLT$V.UM/& MTCA#R@HN>%,;5!;N1:R?'FR"-;5)=@4GBPX;NFB,2YO6U_!\V=,TU#M*HJ;S M_(AKSL];.;>V>+-YW0=E?<]$^1?.>1LB2*E' X="-U!1:\BIXJPQQ)$?"N:% M'N94^VYSL+NEL<)!8,#V46M%([+!W=HPSAI7EE;1FY@F.L =POU::8>Y8@R" M!E>25I&FH#4SO3>-P*_-=+VIK='2GJ/_6R*P\Z38M^9?TA;.[ MK=PL,BX.OSF-#*PR N7RR4(9>H>\0>^S)]*$)%69@O:%Y]>.<(3ON1&,G !! MQ",5/)3$T'=<)@01Q!=&)9FG%7=II%]K"ROEJF/]@\+-+\]#;ENE 2ZJ'=-1 M%J^.YH;)A*;]3/3VK,L9_(G7K"G'O4G6-E&ZHUE&R%:>I&F%G3?!TBS GV5F MFJ?746<&=^R_'C-5/-KXI.#DS:4M"FK?>W(=T:V1;71,< J2UN' #?C,<"30 M XW]DX$K4(P]#SAM;LY3@"NJG.S]KSTUOMC!A[2@7R01?"[YTY"3_]7WEO0- M=M/X*R$WF4K@6( ?2EI0B6LYE?]%*&Y*Y7_82,$K7; M%W%IG-/L47$CN=G9PP0CJ'?>\+;C,C'/73H;6(&#?J"KX/DAPY:!CI*@T7+5 M/&CO1&&Z,;!TBC"!@+.>'$P'\.EIP80]C;AP?/PK>_R5[0KY)ODK)2LZW ME].D-KMCG!#,71S ,$ .1+'\#V8B4;Q/HQ@'GL^U/&%']K\T4O<<-VES"AO< MGXT 7N-*(.;S&D'8*:K334093L0 MZO_;=B"J7$T@/PS$:0DVF5RK#0,9>A'6,]YMX3;U<6&;$U&:0CQ]4>;/"KROD5,NW55, M_5:E4OS&Y::XP)OK*>'&Q'$-8F0OA.MZ5W-';PTJ?2%P:_B=<61R7_[B>7UX++&*1H>S7EO7C$?S^H+!79]JZLEHIQP*:OVFHT][F-OD6 M2S4_$]J"\ MR-86FQ]9M$[EVJU*>'3O)SMQ&>]>#X\\X-[D5P""$<1 M1,)!,$81@C3QD4H$L)3J@@6<% M.@"M0 L1:# "%4A5:1>@D?[5O&S@HL;=5@G"92@U;SG#9>A\93%?F'3C;($V M]V!MATCSHSDW?,>W7*3E.J NBT*Y*F,',8A"[$,2$P$%3SQ*G#CT0Z,L/@/] M+6WUW.?.;'/PX+]-#Y&&$-9;RRSB-O$BLX>LV21)60^'T8VX%L^B-8&QQ,)# MO12ZGK0AH+#I&O M\KJ(P(4^P;$G?\\I0H8W7?T]+HU4U''!".J.D7(:NG5F<'^TIAV M"O\8WX@-#(?VM9@]D"=FH(>R_X"E3] :%VB"]* \6.N/$(WK+NM9ZAA_ ;?"']++OL<9^8KB][%'=4 M!QW=5Z#1'AS4!P?]5Z#[ 1T.%\"]V/LB'[L@+_:+,?"A6^R7,Y/[W4*_(#-/ MOC<9Q%XGP'DEFL]_\$V0/G(]?!L);)92_)3E//VY;2LI.HF'DQA!P9Q0VC\N MAHF/'.ABQXE='H<4L=LK*1[UN;1-72.F(C\&S% M$R\"-&GMQ.,>%U Z\2($>I43+[\Z\E*:_N)LMY$<]E'R6_;*^7>>OZ247SEF MWU1#+G^Z%X=HH+I&SONL*(LJ)\C:\P5/XB2 3AAPM3%C,'8# AW"/1>'"?,\ MHR+TDTBY-"IKE50F3ZLF:/2L[P;!I3O$O:[JO4Y 8*TNJ/1ML@@9YBZ>YMO0 MO$1^ZQ&?\4YX?]=[N,-:M6?W=5S+>_RV4D-NZCIU$ MQGEO5Z>$^>RR=-+.)O*#*J[=X)[?TWYNZK.=W->V9YD/N51U[4I;.(S] '*? M1VHU$C .O1 *W^$\B%B 0KL>3Y856-I"-;-OD^W/P9(7TQL.\@+\E8H!AZ5+ M+DD@;:N+7G!.:L$ %1HS>B5--(YS^1_9%G]9GD83#8ZQ3]%4*F$#H(G9_("-BI)04H(?S9^3))4=@L02,5[M9E8"&U+VE&@&GS>O+_RA MN>SYE&Z_ET_EQSS/\O=9GO.JI,NG#?ZYI@Q[F(<1C#ES)"V$#":8NS!,(H[B M.& TTC* ];I;&CFT$@,I,MY2=07UO<1E[79=R0\."NC7)M; O9]#[*,Y,9,8 M 0E^*.DM\(H93*/J'6LT/UL!9'U5NQ61#=ZZN?# 6:;H3K7TYM3J/SG.'^50 M\+5#F*#$0U!01T!$0A\F(0Y@$",'>[XK:!2,K"A@(L?2.$E^?N'HE/Y& Z!G MQ\P Z\3D]*DOWWY]G$JK_69'G150FH!*E4FRZH_!TGZZ?",IWBH/_ABH>A+< MCVINH7&=2IMZ3[DF#D])KL452LT57A[E.,JO3RV)IH9F=T;=T M#]Z_2J1D1_)E'5+:'Y+98QXOB# ZL#'=*C&W>W>5!SE/F]O'_ ]9Y2J9KPH2]LM_('_3I]V M3P!OMSNYZ:8=B:MK-][<[:[4WY0"QJ&28\=,;T6:9R2F/OVHE0!=*8%28]5Z MZ^2@U>3HH15HE%&!%.TU?/$_P3]RE3!0SE:K49DW FTO8'.L('/'2OU^,2C1<_WE!-3>&2Z<"R6ZOC8K.#CK,M#T>'.:)-\,V!V_Y6]_]YK:CKXK8 M:C^(I:0*TAV5M][3#LKYK[&#U87;VGY5N\.1BXZ*=_]<%#O./NQDLS_K/6\E M2W%9Z#7UW)AR%D/D40X1P@R2..:0!RA / ZBQ#/*FS%"AJ4M%+6L(*V44.DR MBIW*+%9F3=T%K(:RN.%,=<0P:2X'TX(_!]$7H)9_5?-YL;K,Z]U8 BSD5]'Q MQ+1(Y./QM$71(R28EWS'0W1&JSN^';'BR8T,N&^RBKM M2(LZ<24M1A1B&C,8>S%"7BR$ZVC5S.CK9&F4MQ<3M'(:9#"X!F0_9]F"9V)2 M.D=F3+6C:Q 9I&.P -5,B1,.D.6-J+;J$@U@T)MWX-J[\V4(&)#^*)9_Z-D1 M?'<(EOJ^>W[>5(LGWKS#^41?4C]D7+CFW#HPZ> _'$?(< M[$90$,XD188A)(@E,.%.X/((<>9KU0"Q+-?26'4?\IH)T-4--,J!2KMN&A'0 MZ*>,S5I# Y*Q., :U/TVPS:U"=H)4C89O!G&D] MZD[#HCNHI!G4HAK4M#.H^6$:;BHE;:U@]H'N7?0L=C??.FD?HZ.E=8+FS<,: M/F[+M'S]QG^JQ!=X6WZ5W^_:0YZ;Q#R$C'F^\B9F,(E0 H634!X0A\5Z:9&O M=;"T];&6$1R$!$I*_1B%BR#V+UTVH)EX#3)$Q2C2H$_U4;$%%QN<+9J@3YUN M_$#O<^;WT7^4^>:1YT_%O7C,V5V>']9[TAU7KWNEK/&T^Y:OK MF\>GGW_P\E?&C.?[E=>7-MDK,<%C^J0^UUI6_:E]#:+A>6T!G8DG]05@)IC" M SB,FK_7VIQM\@XHU9VY0X^.3B>0-T;^^RKC?7VA<%P*[?R^MN.!M0[BF'H^ MC2%A'H4H\1G$2!KF >&^%P3*Z\8HX=OM(BV-.=I,^-?J"U1YOCY^?W@8?VUJ M81SU;E'G'9V)F:NC#*BU:2Y6SVI)?D@WNU+5H?PH!*>5.^_ U:N%),7V,;>7 M@.%6@>9.U6 )P M)'6RU/%MP]E_9.J3$X[@>)L56,*(XA8X$:>0Q-? M&"6+&27%TFA:?N;!Y('9$GP]HIT2NU=9^>=I3'1(=&\LCVZ/CUM"EB#G6<7&XWM MYDA8IMYC7D5D"!"S3>8%[=O"#^T1[RTK^/LSM42MA[\1UO#NXZ MG(4\0AZ4.T '(H\(2'S/D?O D L_\!(_,-H'GO6PM%FJ!%0;@=S(*^PZ@'IV MP4VP3#Q+6T0JZ2:H*'!5=TOK]'G[LZ[!5]4[75^O/S@^AURA\M/ESUFNKG3? MO7Y3)2NY%/MP5NDA$I)88.@'KB-)7<8*]+F_1[ MP4%73(#HQ7VB :?DD>112-R66&^YE]OQRVHI?2C.G M_[(Y%]WM6"K'K7)52-R(,LP8%)$OS0E!?$B8_ D+G,0X(*Y/M%)"G+2[-#YI M1#-T[N@"-4P-(]6?VJ37T=QH8E_0<]34[;8SV^2\('QW^EWZY_&+?1T\\G'+ M5&'[M0A"1^I/H.<+*BUWQY.S3,5/"^'Q./!"S42-5WM8VJ3;9S-M"N5(,8&2 MTWSE/@92?Y4>#<],*[(V,J-6WHO:W[3*'K+-Y?< I^V?Q5;EF5AFF3?TO=-I:V@P^/@%JA =*>O!2_!OX6OFA*PWT#\JT M(!T^0+.-YN1;=DT@)W#I,(%JU"F<5@>SGBK_37(<>[_+Y8:@[/S#![5'D(\WX5KK2'@XCCUI;X14 M6AEAZ,+8=P4D*'!"A#%VN##+9#JK_%JS=]9 MV6<]7WZ383D]NWX;('; MT)B8;B]%'^B!8V3H7L=@E%E[H;G9C-CKJG1-UIZGS&?B ^?Y/_)L]URE/\F+ M3UOC+6Y/$TN;FTI44,D*&F%5VO&LW&8F4[4/L^$Y:PFNB2=O'U(3[%8U0!DU MF_O:G6U::RC7G=\ZCX_;B=Y1NGO:57'%'_ASSFE:F0CRYPVO$LEM6=>%["'/ MGGE>OJH\NZ7\-Y7T_%G1^)I&KH==D4!&2:Q2@1*88!3#B#(/,0>3A(9FFTQ; MHBUO__A%VF/_#O!!/\ Z"E;;"MS1S&Q[:6U$]7:.LX[23#=EG8'IZJ2V<(U6 MU1@=N]*VFJVJ3.4J%9R*,FG5L[?9LPVXI7V<-;%FW:+9!O-T]V6]_;?) -U4 MU%7;Q-YZWUB0*.9)#+D@ 434Y9"P!$-'+@12YR MA1O&(3-9MJ[VM+2%IA445)*:+2#7X=2C?"L@37Y>V<5GU08MV_>T'P3#$OM= M[V=6OAI4]Y1AAE\8F_;LO>2B'&\^;QG_^__EKVOL1,+U$Q=&(>(0,2=2!=Q] M&(H@$9%+>8"TN.!J#TOC@";%5R,EJ,0$4D[3U&>G0/:S@!5X)I[]QLB,2']V M1?L;\I^=MCAS K0K"IUG0+OVX,ASS$V%-F>7;9$F]'6-&7%BQPT@$[$'D:.\ MW$-"H @PD[.;$QX(DY5>K]NE3?F*12&I]A2TN_?@M;R&!XYZT&L>)UH'=,9] MW,6*$!\',#4_ #2"R-;QGEZG\Q[>&0%Q=C1G]K;Y/>K7;/MMM^&N0P)797[+ MG[8E^[3!/W5O4:\VL#0^D8)")2E0HD+WZ A#9;]3?B?<('O;=>2&[U*M@#8Q M9^CA!7XHL2W=I@[",NHN]7JKL]VD#BK6O4<=?MAZ5J"J].P:^S&+4!)#'*@B M!4D0PR1R A@Q#T>N0[U(KTB!;H=+8XBZ .][G.>OE?^/05(-;8SU# R;R$U, M$[TI?8I57=5XELP]1\A,GZ2G[FXI^7B.E#=(O7/\WNA\D2KL /_=F"/O^):+ MM%PGR!.>SR+(:+6/20(8)\B'(>$,$Q>AR*Q2WI5^ED8C36A,B?\>MU6Y"F>( M2-D"9!/3Y MTT3VJ7HA]V/OXQ-FY%4EY*7=(I_:O"H7//7;^KEUP(0OB.1?+T*2.@*B2F#S M!(:.0Z(XC$)*C$Z4;I1G:8S]\/U/::E\:_Y[5]1N41_DW\%O4^;>[1DQ;3Z: M:QRFYZWQ67>[&H)6Q>;]F3/N#H,]9[K='FF6EVMW&+I1B78UFAU_FO^7*H'T M*F][T0Q9IRY'@H0#"AU(7(%P[$+B8P MB!Q!(]\CH><9.A^;2: UW6?U,:Y$@YF4;06VO$F<1[,7GJ>FAIWI:.B?]-M& M>#;_X$I*_%!@! MS:7;@3'-+"8?0/WD0=1B'7(:)T@(&""&(<*;L?NKG>QG?//C_?*3U"'AIXSRG:47W2 _]6A6FY<_[G(_^KA M_%<'888H_NM]WWA4?;HII(9'JC< -=^9ZEY(\*,6TZ)[[1 2 MMD]53[MYFV/5*\I>/5>]]OPX/OCX]+S)7CEOJA9W>*@AH'4L?,=SD>2$ 40 M13R&,?(\Z/(XC) 3(>%IY<'4[G%I#"&MR7QWXH-GQA##(.M1A57H)N:,5E;8 M%D8_RK+4R&N/.[2AL40BP_W-RB;:ZI_2BOZ+X_CEZT[Y_]^+^V>>8W4,^9W_ MK"OK$49#PN3.-G9H#)'\$>* .=#GJC0&\TB(C R.JSTMC4]J0=517]:*"HI: M5C-:N8ZM'IU806QB&CF M9<2M&+:8X]!)"RQQO5^9F6+075/66+XA9$1[ZI8 M1Y.5["LOF\@T[":N$PL7,B]6@7[<@7',B#0[2)PX'J6!KU52H[>7I;%"(Q]X MQ[?TUQ/.#>/\+B.IQP,WXS,Q!YQ!,T%H7R\&MH*:+_8Q;PARGYIG <.]#YO- M^.*YH)?.1QY:MR858R2R_*GZ[>>M-$%P>Y0O^:;:_:AL'/Q0\^R^_,7S^GQD MC4A$'2<04#!"( HY@B1T$?0)%3&FH9\$6ID*IQ5S:9QS$'(%,B4FP)6<>M0S M\9#V<]=R!NI-#L0[:H*.GBO0: H.JH*#KBO0'?%*W^9$?!$CSIIR -7;_P(C M?R3O_V^_ .VE=)Z!J==BU5>UP+KR?]4B.W'OLZS2\R#8+O,S]38VR?#G+:LJ M.1GE%VY>6MI"JU_'ZES__G7P)M4G7KHNY!%6],32EY3M)$/9J7%U%8$;L@BW M+/,0>(0EQU"VL!U'D(I@P%, PC(GP_9#X9CD[M7I=FAGU???T MA/-7-64;>8NZ+&Y]/OB]S#E^,B-5/?3UJ-,ZIA,3Y+&\'53!CTIF8#5;_"B4 M++&<7I^S,9?;RB)/:[_079[L-OQ??=\]RD]?$F.#BUZ=-]E=G6]C< M&S]F7S@N>'$R;SAFD>\A%\;8"Z6E& ;24@P)C (2,R?PW "[VL>R=F1:'*X]%+74 MU7PGH':Q.3KNM-ST2(N_*! M+1/\8A_SFMQ]:IZ9V+T/CS&I>?GG\R>N/"K:D)"Z[OF:>7$0.6XL06.J\B]U M81*[ ?2XA^) *"=)+0_K_FZ6-O6EH&#W#(04M8IY;N*[GBMA38RCJ[CJ&*HV MT)K:]I1 _?D,E)3=0+@'>T"9&(8V )O+UNO[PJP9T=P:TN#8 M@AI\>@0WUN>M[[@TO_@^T*7Q8?1]X@G$'8A<3[*C2#P8NT) GF"*L$L=CO5= MNWHZ6AH_-E<5M:S@$()E,./[8-4@1TM@34R/UW :=A(U \R )"T!-Q--&G]H M9@2I 48O1?:]/Q]):FAQ1),ZSX^,V/O?N[1\W6]R?$*DZ>@2:2T*!E&,/*A( M$28DC$*/H0@[D5%XWE'S2R/%6KK1^\03[/0VB.,1F9CY],$P#Z>[J+.MV+GC MQN<-E+NHV%E4W.6G1@:Y[,^<[EYPNE$G29^R7#G7?^=TEU?!=E_2+?]<\J=B M[09A[,6.@ D5$40L%A 3BF 0X2B.HRB,A-%\-NI]:=.]>UK[*=WB+4TK=U4L?F=4(_9]"N5.<8.+(A4IK4L.[OV%/TG%[^[??V[$NA<' MP5K'FS5.<$*\F$"*$5:A/00F2>)#0A*7()HD3L+-L@9.)JO6C)XUO^"I.HI( M?_N)T^WO8*-R_ZV5N V<<2UT^%( MXZ9->U Y YP4/_[&51JF]A]582AWG?BQP[$;0!Q[#,JU2!W*$ ZI2"A#0CAQ M:.2M:RK TO9QK<00-]7.\U;FVJT&2"$,'7>-QT23^R=$>FI*WR=(J<2[4&-^ M+W_]1%7%S"([CX3.%NF:=C\OEXX$YXPBQ[8SCOD:QV)%L2J-O#H-^X^T_/5> M4J_DY?SCWW2S4S%^*N93_H\I(\MGD4K X$/NQ %$+ HE^7D$.A&EOO!#1"=TMXM39D'H"L3](Z6.[S9O#[@E/VS>)]]YQM.)=7^ M496X[WA5:\:GF[2Y-/IZWZT^W2H!E!;@I?BW:A>)MZ^@50'V1AW-%HT_1OUNL/ZH]\UHBO%T?2=WOZS: :NB MR]CC"0T<#*7UY4+$?0P31]6>1!%Q A;RF&OYCY^UO#0VV@L'E'1Z)',.5S^+ MW 3"Q#2AJ;_VA+^J:\^,EN_4,UK^<)C1YRW-,F6O*M#.R>L/C-L5_9%M^>L? M./]?O/RTV[*B\1!+2!2).'&@1R3/H9 YD,1Q"*GG"H=R)_&1403'Y6Z6-ATK M*<%3)2802DZS7WG YN@S71Z,3%>!N[*EG";R5VYQ2\_B&LKED,# MB%Y7Y;[WYW-5UM#BR%59Y_D17%E7I]W?X3WBO[_ALNIE2]--6GTE7[,MXVPG M'R,;WA2,_I3EW8WPVO/CR.'4AQ2+ "(/1);1 M.5H<;;=]:PA!5;C['2XX>\"O:D+<_85SUE;Q^5YF]'\]R,GP2S[Q(+_L?^+- MKG:7454%G]5/IUEA8N$GS(E]Z CH,S9$P?ZPZYVO+&0P)UZ\CW)P*3UA MI2AH- 65JBO0*EN/*VC5!4K?%=AKW!WO23/IS3 XUB,M[$OZ1G$9DT%^/8IC MNBY';._:_"AR1>P4C?NF_)'NQ9]%4^)V30(_BJA+("7,A2@) DB([\$X\8.0 M\#AB3J(7O6'0JQ:US!N'H22$F8 [R1?&158TL=;8>%G$;^;L1VH_U2WM7/<)JJ[/I()Q7",LE\?#-VMK/F('5NUW1;&J^ MW8B9;D>;#<-7Q^TE5+*[NRU3?Z@PYQ>\4;$[=^5[G.>OZ?9G9<^N6,X,7_O(:Q^Z(B\ K@$K=3U)LJ>96R$DB4;5Z_/6:U5(QA.[4ZSE\=Q46/' M%H_9'95]2.NV*4?4A.Y4,M3_PM:"A]3A00()1CY$ZC8 .YQ!+G]R0U?RU,&4 M-(CI-)%AA&$Y1YAF)5Z1MJ@8T!S1*/&74]*YV- >64U4:U,4'4X(>TJ JIJ=/D!RZ_V6VY M#L($)PYQ8!CZJHBI2&#,$(',$#%[J?CD!@SW@& 4,]K4S M\J9J?T;9O?[J5 !\]WKY&+/Z;?&Y*':1HQ"(F@" M<2):HRFOF3J7"P=1_H<5%/5K'HNH)H1KE4$+.J7BE[U_:B*H2-R$PH@E 40H#B%A<0R= M.$9>Z% DHE&EH:YWN3B^[M84ZH@-VKR>7T8Y!>O!KW%79!W4N6[QWP+/<;65 M[.#Z%J63NOCR2O0)*B,-PZ-;^*BGI3>I:S2LV;6R11IOCK/<'_,J,O6UZJ%> M$_8G?3PB?AB'&++01Q %D0.Q0T+H<>Y'"0EM"AX<>1#3Q(<;*.R\DPF6>Y],(F>R ;H5\ M3J?VG0K7JMBFMGOS/?AL&K#U-BB6()QX-6RE;)T0:T%7$YQ5:^!A:0O0U].L M!KV&RJ?FN"]>/?-?H_.1Z5TLCCU92T!75C"EZ<-4C"CMH3CF9EC6&%3TE#XXV1%^]Y]LSS\E7YB99W6Z9,R6>UA_BSX&*W^9(* MOO9C%[G$C6 L2 Q10B.(/<$A9Z' +$Y($AB9'AI]+HU%&J]^:6_L*AG!)GVI M+;_G1IG*MX6WFAA>MFL,@N8=NUUHI[Y:;Z1=59[S907A7N(5J&4&2FB+%^KZ M"-FZ1]?H<=[K:6QC4#V;_JA-T6,JM=QK:? M9R:"=6*>,4%TEB1JO8!9RI]VN8\W3)W6JW1_UK3^5\=9/M4UN#I ^_PDU_"7 MZF:DS3E$@P CWV&0^9A!A'D(<8@2Z$0H"4),"7*(B<73T]?2V&&<<5E^,QUL1U MU:$W@21F'*)(;HQBQ"AT/$:=B'$/4;$_#<]*O-%CB\N]C3D(W_$L+P%K M(XN &ZMPUCJ_R([1%&/PZ6N.)*)[/21+^BIPPQ\/1( M3S>^V:B,TUM6IYB3/S>Y']ITD"P,O1 GT$,QAHB$ F(?2ZX@@D8.]T1$8R/G MM8$.EV92J&(L1;6Y?VKE-?0^&T)8CQQLXC8Q332B5J#MA=TG";)O8.A"8\N% M:ZB[>;VR-)4_<[32?6\7%M/=95YN1T)PN/F.;&>'' M>^'R\4'NK]-"_H WG[T5Z'X?UTXBEO9-&#A4+^W;F,D? M>T'?B)F']YSCU>L@/HL@\_F7SXGKD7OZK!V;^Q=\DFAFVRIIJ[2:7N5F7X,,"U36G?T:NQM,*KQI6V:&R5 JX4JG[C70^T>3C71=T 8!_ZP.\+D MN$^\PAM#/H&'PDT8CO)7&-?C;-X+-P'2]66XK:'1MY62A5E5'S,ENXJ%9:\J MQG^3*1>*TQ3 "64.$0Z&@1,0B$C"8$(".6()<2A)XA QHWPCI@(LC06[ 6[5 M'2KHJJ(2 96_ZFR_QE>;9@.C?>DY&=S37X"YZ].U2S M[N>^71T%SH5[UW'MC#BMNI,8>U5PS2%&3QJA/W/\U-P6NA'UO83'D"$_@ @[ M',9,,*@R%(>8HR1F6MY=>MTMC=R4O*"1T&"O/PRKQN&-5; FIJ8*ISK!^T'8 M%KCA*]@Q"!H<=5A%QXPW,I\FWEMC8YVXOIO68LU;.J& M_3=GGYG\F%*1*DZO4Q6W$8YW6];9RE?YZ%6ND5)^)NG^X/Y)K<#!]5!5_PC^?P2=NZFP^9L3TEJ2)QV'BA:65'OPEQ0>M M_"NP_WVE2N?O>Y56U;(BIRA/7ZI59\K#FQM MI7L?X0$\Z;^'P_162& &YH: M1ZC[6HMWN_)7ELOFO\J/]N[OM%B[ON,+E\R:\>;VKI=%CIZ[L7M854-*:<5\/N'H49P>RB9GL.EK@AQ+5(AL-XV&)='HZ MFI5;AA4^I1"--T8<^=;N]XIXOG.ZRRN3KSE2B]TH0()0R#V/020$A@F-!.28 M$DXEA6!7*W?)0#]+XXB#I*#8B_KO!H>5/9!JG//: 6IB9NA@=)!RS,%N#U8& M)[IV,)OI*/!Z#V[[7E]OD/;81V.3FLU'K^Q]$@3F%3E4>.AW$53K-UPRW@=4CVK MR0I0$U/C :-62&DL-6):-)@&H;!=X..LG[>IY'%-W:LE.ZZ^,(X5FL.43U+" M2WNZPU$')C0)/81A%!$$)2?$,"9A KDO,18AFP&YB&FD/[=14 )>/E"P[,XX%RQ+1:'<[*^^8@G%*0\;OVSL]_[#+*TOV M0_:$T^U:B,#%KMS#"2=4Z<=C#Q(><2@WEA]WN30FNG8PVTI] M^_'W">3C3[O' _E&A]NMP.!'+?+$!]67\9GP7/JDPS<_AKX,@,ZI\Y4W+=6> MO9KDD*IYYUH3:-9HTX=N!00K M>7#U1T*/EBRC^W8%9T\RY:Z.4^5.6&YV$+"IBLU>[_AM2\T. C)8:':XA3&9 M<[_S#:=RSC=9,N^>2OTTN>?O+L_L>7K&VU?02KK/UGKWI ((3=+@7@"JGTQL M8#2Y13,.'L,TMMA4<[]X2Z7-N4/ M$H-G*3),MX#60IL9%1I@ZQD3=B&&LIH(^ *01[[D&I\H+QKDPQ![S&48NS2V MP37+O"D_F2CP,%<(Q1@DIKP,U++AW,)DA-J07*M)3R%DDIM=36))*;KI(9 M3]E@.&N7??W%>?E&8JXK@RM,SCKD3"=>!3H "B.+84TE+ M$XBBQ.,T)@3Y6M6WASI:VF1NY 25H*"5=,@EU Q;O47?!F(3S_%Q8)F'@0T@ M82MBZUHW\P97#2A[%@0+WBC#BJ_\:+,4W7@H?[A;LN. M?]%Y\O.6;G8JN^B'M'C."KSY1Y[MGN4;*K%#IO)Z[3AKG%BR;;$.6<(=(AB, M7%= 1#B#F+D4-P+1]/,_:]Q'FI>8D[HPHFD_)4D0F/_Z1.U8T M53_P@W8 EX#PG^EVJWRYU"U-)9/A)?&3YA/YN-6\8UOV!]*J\4:?!Y>__U?X,/06TZ4.]=3G_U*1%:C&N:./ MB@1O507U(W5LWM$OC]_88P!:$$"%0O5F%P=P ,*BF\0;#)\MAXLY19_7=>,- M!N7,">0M9!AYUEJ%EJ\#)PPXB\QY9'BIR=3Q[_ MJ[F?P]U?.&?%^TU6\,?LC^USJJ;PYRU3482Z_@Y];2SMF$(_JG<0G?Z99A.8 MJ>=>)2:HY%3WFH^IJFZ0@3^^/GSNIHU4Q@Q+7U*FCB5[@31R@]!!:90[1&_# ML[E%Z*C7=8_0>GYD83U5Q.0L?5D=_1_$+N$NAA'& 42]8[F+9DWJ/!9 ML;SA-\SO)=^KI-K[^$N4."&1\Q^&(:<0.2R&,8L9]%T4,\?Q7.1JU=D\:WEI M'% )IQ.1.0#8\.7C:!BF/O#01<#HOO&BMJ,N&H];FNV&\:("W:O%RP^,=2IJ M"W4HW^;+G@?5K"=ROC/EHLJW19/ 36[.B[3DWWG^DE+^4!T^-FG=U /_Q)L= M7X.)"+'C@49]$U&-F?DG3"KPTFJ@\QV"EC"J^N-?& MU+%IXF'6/ )8T.!-O<%Y^/Q^5==IA.^JT6MB",!=GLL'>5V&LN7!.+.[,7V#S@GSN2S=3OFY>C;/ZU.&0L7".*(QXB M"GFB"OF*1&6;CESH(TX"XHH@H%KKSBS2+FW1Z9:/PXVT(-^+^V;5!2^,<__" ML[C1FWC5F:Z*8*MV)ROHDCZ#-RLP>=OG\"]?7-+DLWC+NI+7AVG&FI(7A/A7 MK2=Y'<\):TGV=#K"!&G34BNKN[C;LKNG+"_3_Z[$.Q M00 )%3&,G4@03P2N+[1NK@S[79I9<"FG=Z6%I($R?=&N)&D*O\8:/PVH$Z_6 MIR!N&>C*;9)U^R9\#1;/:7">:1GR3BQ'$1=)T8011A7]7-%/*O M(A$T8O*C8F;I8 ;[U)H:LV:!.9X9QBG(!R#6.QRT ]ML"OJC[3*5+S5>JSD\UORW7( M!9%6HC0522")A7DNQ &AD/&(("1"S\=&Q0VN=[4T.[&N,[4YB+H"VVP+&VD- M,_5>!UB/5NS -C&?U(A]Z2)VD--BKMY!+&PEZ[W>T;S9>@<5/DO7._SY0 M[TY/VCN70>]>#X\T=T657Y9R@BY?/V^+,J^,Y$/%J_OGRM?YG[PH55VL^I3^ M/WCZ\Y?\^]T+S_%/_@_9?OE!FA"?<)K7=W7"0 MD'$4!HEC['>U!,V6QH.U^'743IVNI:@*IZ9%H8(O?I,6 \LV&YP7*G0'% JD MWT?X@"T!>Q.7LR7(NR#R[UX2=U'IWA0#\GKY,EEALP(U.J #3[?88X/0"C0? MI/SN:I16H,4)-$"!"BF@H (**U"!9=G);DGC;].G;Q%ZS>]"N BU^SP6%R6@ M>;R$-$&^\JRM1J,9(''TTM(61BD<_/KQ7O.@X1R#_K7F)O4GYOI6B1B0900GX6!2?R?;L=&\W6V"$&Q*U4ZTI]Y5DB#M9'6 MS%S51E[/FIP"SXD)H!9Y!?9"@TKJ5;?X:ID!PJNL;/8,+U.H+-E%VMW.:K:8 M@G%J51B_/_;((,O+1YX_?=Z^\,:3;^T+%_E1F,"0)SI2>Y=]E*:[I0O@*F[:;T-HLGWCPH=)1_XK('.B#W; M=?6M;9\N=#'S3N:ZDN>;BIYG1^9V.W>4:=QM_UMN,ICL(14IWA>];[+0LT[1 MYI07\M_D7H6]K\\K._^P]A)"$Q\SR"/Y'^01#HF/'.@&CN\*Q+B'@_:2\]$@ M4=RD4H^X)GV<(W"K%K1[OV&8:V[:L=;CM 4,W5NZQ!YT!5UE0:UM6[*C/KOM MZ 4:C5>@_0J^:'P%YDGT9AD<6ZGXIA5VWH1^LP!_EA9PGEXM59]=1XZT-3UU MITV"2/XG$[^Z9VUK_(8.R#$)S5LR *49CC"*9!%,$D% S2H(BA2/,D0I3F MW,Y;C*O^U%S19U[+)7"3?%:TD\_8.8;($0DA[1\/,Q\XW4D?V,'Z(X7TGEBO!)$NFOAG%E>/O%'\OUV M77\K5_/Z5;%E;1ON!@E"+, 8%B2)Y4DCE^^ MQ\UWR"A.>2]="EGPXN[U]TJEDOPL%_]+)IW5MIQ.K>H;FJ>,T2+*P@CBA"*8 M(*RZ"N("BCPMY#\BR1-FXU'L59B:G]$ACEB4?U5 33@0C>J ['2W\S@.TV+F MAX8%>^B4%;GDT%@WZJM>N\Q%_2VQ>^Y'^1A3K*GA6*<#>1 4:NUBV) M8#G,PQC+'S.4DP(A&7?8!!@7Y$WM?=7Z ?Z]YDM%3N'42^42Q&;!@D?@!G[% MS^:R;=4%2M]A4]@Z@!DP,X_?_/Z+'7IV%/]]+-5PFE[>M$E'^Z:I MO;)[6BF5;]VN#OJ71;.. U@NA^O.B S\EIX'PQO-_EGSW?IL'(PT7F.-+@,. M.FET7G!%Q?@)-^MI[1H]KEU[V/'SSQF_%^]T[;$FDG[@\H%9UK,MF$<4TYG)@A^>AYGKW)&A[UH)C57":?R*5W\>[V:5\6<*=VV.Y68IB)! M)($X$:J7DQ"0HC2&:2A2F@41RPNCMBV&\J;V5=#J;I+%E<*@K;&E^[\ M*$/ M]P??T(ZX!SF/^\:6P/ARA!>DC>O-S$P_<4F&MSD=_/PB)?S*B6KU]YY7;#77 MW I[9E+SLZ +(TW-8:C3D5]N;Q_ 5F?04MKJO.@2@D9'2![!&^%4Z1QNX*L) M4Z[M49,A-JZG3Y>&'_- RM#4HS,JT[O< H^&KO&1?&_5M&@REEF896$8I!P6 MH4 PR5@"*0L)S.42EB 1!2C)[*A;>Z09O02CDK9N&)Z*AG-TOLDBJ\EW]]+$ M/K3-(H]K$1R9>5OEW!W0+FI-_<4;!G!XBC7Z)(T:9QB8?!QCF-SBYCZ.>)D^ MKU7,V0YR(,W"1-0YB+@D&$BQ!C M$48Y0C,Y$BW?'/NV%L.AOR/F(UMBOH9!4NL/RKT!-X"..5-FGX'!T!_XPW#" MA[C17.WN;70']VWDM?K^OA9.J'GZ?MC)'O6+X@3+\3?&;1#[=L8?EK4Z>=V4 M87_ASZJQP?(/M8I>5[-".C:.PU@ZMXS")* (YCBD4#!,:1KBG"5&25:7!$WM M6[+1=4>:L-,6;-0U[WWR!4NJT;))E@X]4WN'7BT-LHFYK6[ M*AM=[UAQK;1=UJL-L\.\^O-1CM.D2T5A07@FU[ 4$Y@D(H,TQ0(&,MB,DOG MM,5EJ)#A6-S;Q@UGC+\8/)R[[[HSLUT%>YL>$D5AD% 910@1()BD+(C=1OD_*P3>;L#-&<@W_H$[1?%#^__!*T/ M#\]':)VBWN0,K<_HXABM5?2^^\!>^7/,9BE->A!&&G&4,)CSFD"0! M@7E*BHP1GB:!5:7HP>C3"T2J6NW^KS;JV9*I'0!G&FDXPC%X6+%!8JN9SQ"B MPV!O\4)[[)&#@PZS3B.!KHNNZ&:O2G/LEH#C$A M,61(X* ("8Y#HWX!O5*F]M:^_^UWPS>U'[S^-]8;)&-]J[6.0"MY.;?6 B:' M!O+7P#5VN_@6;)Y;Q)]#P:@A_,G-X[=_/Z=_9[/WLQ=?X>YT _F/FQ:MQ8R2 M( B#E$%2$ $3&8[ /!0%#.)86AB1+"9&M>?G14S-T35Z[9Y"T<'S. M^(SE];2"H-'P:F@F1-S>=M505:5]!2]M+FIC7(9@LV3] -[ Z=4;->SQG@X6EUUR=I MU+6>@JWF8N!]_H&F<:'3;*_./M;9_-HVHC;]/Y!_5TEV\ M&?8%MP\OSX^JC91I66US_=3\[ -Y!2^5(M@0Y>J)R&D&[^<56Y2J!M&\>G8' M1[^WMND-$J6H_5;M>MGOSM"EJ,)]UOK?ET M(HK2'&,"\RP,8)(6#.)(8,@SE(>D8"F.0VLFC ,14WL==QI>$;UT &D6@UP' MS\#OJ"4R;FP6G<;[)+ X%# ^9T6G@9TT%=U7.FPOZZJ@N\L\/'?'/#S_481? M#1E/\7.YTK^=I90%69 1R((\5?U@$,09%E 4-,%AQ#.*C+HW#*'UKGO>3C'14ZS)#O?O MJGZ!]5]\G2,,- F])Q"^98YW=C$06@>G'D/)<(O&'U:J4*1^?9 /=BV7UHH$ M^5F)?"@7<_:Z)T7B(HP%30)8Y$3&Z"C/(4$801;QG(I(?JUCJZ([4\%3^]0V M>NN-K9W2=I&[,>AF\?P04 Z]$M^J? .TTH=@RE]JQ<'7[7^]6 L M=M1%@RT8QTL)Z_O=O-7M8E'^I?9MI/=[7ZYI+=:+6\9T\/N%,SY_41L4W6TM M9U$:,Q0G$8PII3#!60@QRE*8\PQ%B&&,$BNFFFN4F9I7^[B"&SI?;V(;)N56)#ZN=C989OE?-HIE+'&MN!G:3C120OG" M5Z_OU_RQ?#^O_KVJN=&L#:(P MA5SAU24XMD/5!:A"H,84^6+K71SSPQBGF;A\<#/T) SL,P?#W^K\YQH0GE/D=4O]T&4%O_V]2] M/R]XS?>-8K9,.>T"1Y(FF"A.*QRP&*K_AU0$$0P$)4&&BH0)OBLM-=SL'EII MHY?]J#9UU.Y$-X!M::"LJU+'F76#C?%)3.(X'KLQ%;1LO0$M:T'+W!O0K%7V M%H.]R=*+MQZ#A@WLTS0? XO-]"D]#B/MKD_CL;#;;A]KFGKWWP=78KP-^;'P M/-BA'TVH0T]!M>5?O5N4E0Q\?ET^SU7^DE6"VOD1IK:0VF@*M*I@O@2/\R<= MR/_Z^>%C*V_+T*-?0._RLL@/<$-O&!EBYC?9[3(T;@T+SP\[7O?"BZ8=M#*\ M?+5C?8)T)N437^D*")7;^FW^O*]6#Q EI(!Y'!.89#B!..84)S$1>_O6_?[^8_/0-YHOQ;/IO?V)_IG_Z M":9QEL;3\W_[TU\_OR'V3__]W__E7_[U_R/D?[[X^.ZG5[-X>0'3Y4\OY^"7 MD'[Z?;S\\M/R"_ST]]G\'^-O_J$NFCPUQ@G MUNI,,J,@LQ46G%E]Z&0\_<=?RA_!+^ GW-YTL?KVW_[T9;G\^I>??_[]]]__ M_#W,)W^>S<]_YI2*GS>__:?K7__^X/=_%ZO?9LZYGU=_>_.KB_&N7\2/93__ MSU_??8I?X,*3\72Q]--8%EB,_[)8_?#=+/KEBNM/TO73WM\HWY'-KY'R(X*, M$>S/WQ?I3__^+S_]M&;'?#:!CY!_*O_]Z\>W=Y9%EM]1W^X/K?EU6.(@.^+V&:8+V[S2*36;SS2Y/"V]G-OYSX )/53T<) MQJ/5IYZ%Q7+NXW+DO'):AT0$4$>D]D"IWA;IV3S^-)LGF*/RV"SGY_&!>._"]OHW?O[JY_A! M)'X93]+F7^?Y[**&K):S"IQ;BP7)_=-/N.L,\SFD=VNI[-W<:F=+5*FP^LT: M$C^;3B_]Y"-\GM1,">/L( M.)J3 R/AY>6\,.K->!']Y'^!G[^>IE=X 8\D[H!E%4BT>(=*[SSQ226B>8Z0 MJ<@ZLM/4UYZ5.R%"M(N(*AQM1#]\@/EXEFXVP(PS0F@B(4;D2$(%9P#_$$XR M'Y5*0E51$'>6[80'V2X>3N=E(V#X//?3Q;@P_EK-<>&33=80K=5*UT5BE8LD M14:3 B6B2G5,A7LK=X*$:A\2)W%T8%2\GB['RZLWXPG\=GD18#Y"R.8<$B.! M:G2D.'I3WC%)\+XS+'*:HA$GH>'^BIU0H-M%P4D<;$+Z'^%\7)@P7?[F+V 4 MG?8R14],3)Y(JTSQN#7APM)HE64.3C,@=ZW:"06F=125T.;]Z.4LP2B'Q "(20='HD<4&"@(AKJQ2VBO@,==0#8\2T0DG MMG6<#D<(E(B4%$A1^BZQ2RD0K M0=90'3N6[H:,AJ.9=9C:$C)>XI?OYY]GOT]'VAN\&Z,F0E"&)A7-I,1CD"D< M)/<955>VD F^C)#K8 MHOPT)UYY@9R*(ABM*61?#R!WUNX&CX:#GY78.O0C2=G#'/R*[BB15H$<\" MB#1*$*>D)U2H)"&([-.)[[I;JW4#0,.ASJ-9-[#(2Q;%Y,.7V703G',>B4B) M$94\)=*QC%I-).)#=-Z+(*PY[9JXOV(WT3<;R< MP CW+P*5D0BM_=K:L3*A&6Q$Y%*"U>:T2^#^BMW$WW!@\R06#BS^SW-?,M4^ M75V$V61$/;CLN2D^#^)6&$JL8D"$==QR87T*IVG\.\MU$WS#D+1LQ6>I9+&8Y$+B@L29$GM, :U5A;,65WEX&^OV@T##8<@3V9E M$^[ WV$R^8\I.KN?P"_P'DMO%XM+O,@$ ,V24B(,&C/2(6OPGP>"RLWB%UHJ M>]K#]Z/+=TN9:CX"68.Y3:#D;[/))0I@OGK*G2]&WH),,09BLY$([H@6C@N! M&&ECCM)+!J==%SN7[8:*YJ./IS"S"31C=L-!^#K,#:)B#R=HJ?ANP8?X-7?NFOMX50 MCR"B$42[$A!Q7*.E%!6Q5M&H+!I,5E: R.[5NT&D^4!D!=8V 9&5]GOIEW ^ MFU^-(,5D,XU$>68)NDH.R3>6T!PT2]SF0&N\7=Q9M!L@F@\]'L_()G#PZ<)/ M)B\N%^,I+!:CF')PB@:2HD!6.(O.<]"2V,"H\=2YR$Y+P-VQ:#<<-!R!/)61 M3>#@]07,S_'*^V4^^WWYY>7LXJN?7HV2XF!8E@2DQFU0C0X5IX*@781FLI,Z MLQIZ8>?BW7#1<'BR%F,'QL?;F.=GEVF,OW&V7,)B+8,W$W\^8C;RK &(8@P- MHR@I\<5.\LPI 288RT^+6>Y?NQLZ&HY>5F)K$\KCTQ=TM3?0SH(':G@@H#E> M@8!78 "72>02C(*0=@$$RSH2EM&WEI$CFC5G1.(/>=!>TEBG]&\_#=U TG#(LS*;F] <'R[# M9!S?3&9^.;*@J#=6H\U44CB,B20X:@A/0B=)%858(X*QM62W2L#F YW',K$) M!*"^NRB9YK/XCT]?D&V+]Y?+TG.@O/",DHZ4*72K+>6 [E0I4] A$J-=!AIM M$K1&7O]C-'3#2/-ASVIL;N2N6=P6*D!ZVOJB;?6$LUH5)$!#U6R>.\MVPTAS0='3V%F(WKEMJK^#?YD M,:(R.[Q)*3KJI7L/ ]Q"0%\L2X&(%@I=M%J&ZYV%NR&BX>AH#88VA8EU>?UZ M$Z7"R7*M"3<1G3.=+;$";\V,?GOPU#$7ZQ2F/UBZ&RX:CI;68>K R#C#':35 M+HK7Q867G.%5%[P2!=* 7\5,>(Y1<.-H]J>]J]U9KAL"&HZ+'L^\:E+_UY\? M,.\=_N"$OF.K4-[;:>D?M_JXNR1W:T'VX#-J=2-[G+@3&Y.5%4?W5[@!"><: MN"]-BB1-1()QQ*,12#1:!LP'G;UB3_'ET15..L;K^.N;\?SB;1H9&@"HX"0G MAWCVWI;L,4^8=HD+&YSVIRGU.\L-TYFLGK#NG.BC^3BT'E\3ODH>S#0FX!(U M#R^M402UQ'&%KHL$;@&"T9'7$'_G],OJ#F&OPC^8AVV(_MUU,TOT58+G@3.T M/EAI;5 *#2531 OE>6+>,'-:6>^]!8?I0M8K!([B9<-W^LO9=#&;C-,JVN$G MI0_JIR\ R\4QE_O^#ZO7<[03N2=>]Y<+_SF_$4%QNC-3]; M-YNZ 90&IJU%0QY5/SI[(A8349<^N6CB@1*0XV.9JMDOPDKJUXNN3Q9,EHO- M3VZ/V"%T':LW-FN<+1;(UIM=FB"E! 7HTA:M%TU&E]8ZHECD00J?.7^L5\0Q MN[Q+P3"V1&](V*B6"NP>\)*Y2_UUHN#-)M!%TI8AZ2&6D'M."E6MPXLS<26I M$ [<8S[C\9BY1\BPT#E%LCM!<@J;&\#*2[_XGSR;3W!AUED9%-V1KBJ= $0J16.Y-=?*QBZ!CL="*L!2R= M!(!9W])H &*?OLSFR\^ GMKT&RR6JV>=D5^95\:;61;1*1 M2LD?R_L\ZI[>0<!2X#B%PF,[1 M/6*M-^D<#CVWAMX4SHL_VY,J^PV6-P,4DR1!Z38EN27!64DH4LLD4S[P MQQYZZRBR6WJ&Z4#]G&KL2-X?K\1F2S^I@J-7U\N^G"UNF#3B4BB)^I:P+/ T M&&!X&@1',S!+J03/S-8VH7;1,4S/ZOYP,$6$*5 MX24<4K+[09*@E4TIN)AU;1?N(17#=+;N#RLG\KD!I-PC/B+0#7H*;J46?0F' MQ,R("LJ#EHG31[M G!PC&J:C=8]WT-'<;>#2^3"??87Y\NK#Q)=A0*E$)+X6 MCQ+OT5%$%T!J#01L>;A1$OT!32G)4B%SP*6<'TN=/P8IC]'3@A]?):A8C>D- MZ);WN!-?NAJ\ [^ CV6PX?O\UP6LV#6"J$1*HLP6\XI(BU>J9UH18ST(D0(W MIC:"'B6H!3>^"H3JL;T!#/TRFZ7?QY/)R#!I%"T],%+I=Y M1^4IT14T(/!8 MK#IC5(;+9NT6G.XJR#B*F2H!4>Z"EPJ,KX!3;)EJ_\VF\;[ M5I[Q.NKHB==EDAW:?"2 C20[YJ2)61I3^T7]48):\*KKW$;5V-X AN[$!D82 M\";5-),H"9<2IQD3T/266<:'\L:K791#>LN]8>?T[G> '36](^$ M#L;+,H^@U.?+X!-QH<2O#$L*%:?RKC96UBNW$.>MF.-U$",;B-R]&_LPGHR7 M8UB<3=.J!/_+;(),7Y1PTO+JAC590LIX&(BUI5PV!T:L$9&P2+EDX(SAC]4> M'P.0KK0->S_UGF':BX@:T#Q;^[H?2(\Y>CQ\CK#$/9& -ESPVA.GN)5:*0VJ M]GOE?FJ&M9W[D?Y^B)TBB@9 M7G*_^"OMM-!\)(7J-LI,=Z6PFYC25 \$>]S MSK@[\-K6OMYV4M(,F$Z2\Y[\B1.8W@!T7E]\G7.C1@! MD4ED#K.\U+8IA_8B#<28Q!)U%%W/VH\5>XD9UE'K3SE58'T#&'HYFZZX\??Q M\LO+R\5R=@'SS:ZN;G1N<-D:ZTD&$XBD: KXX#FAJ0P;P7.":*@,IRYT#?LN MUA.RJ@ND 9#=?1%^L)N4\*B(J GJ7T:DQBUY76:4X%U?(J\ C_944KQK0\!G#00>@PF-)&-VA-T M3F1V Q&I551U:QL[@K84K(S)*Q*$E03O[4B"49F #IRG8*6TM2NWGZ:J&4.\ MOS!!9=$TH)L>O<*W@OK6F4BU,L1P58H RB"F2!5!SB$W8XJ,L^P'#&(>!,H2YP5);E3FE(C+@E:&,$Q=($SZSW# MX"Y)#3P3]X>OFN)H %W[N352D7/'T7H-(:LRYU22X "(8%)GGBGXZE?E?FJ& MC3OTK;/J"*$!.&UM8B0<<@*4*!D9FL@(BCBP@62JJ#0Y),J*+U/T#K$&QNFL6R%^^PC$XFDJ/%^Y@8=9K3^\"2! M<=%YXVW]R.=>/:'HUK":$#_/,(A\";K@(=#&Y_P8O81=P*KG$#%4J3X M36U+_,1,E^>(=O:'JDJB: !4'S;KKK:T[LP<90[?DJR/A!^60I[&[ <1LS<%9TX^\R$FC0^!IZ6*.MS6QP= 2 M#@:EG -6O>_'?1J&3J[K!2LG,;H!H'R>@U]:?MH&=:2[@DX51C?1K^AE%8IJG[RP8_3V^E+_W6, M9OK6RDB#2A$1<+M>X\\(G)]"J"[534YZD:EC#NB=8519& QKJ M(RS]> KIM9]/T2U8G,5X>7&YRN9Z!7D)AY\NEFHP>\:)(1]6 MLO@"RW'TD[L;.7%\R-U/[GV6R",;><[!(C%3Q3SZ@D*@&RACSL1!-@11F -' M_:>J!_F>8[#(W0 ;\OK]?+5L6GG 'V"^FMT\AHQ(5Q2N= M@52X=9MJYW9VHVSHJ&=EY#P>_ZPBG@9,K+N[6D\'/[M/I^4@Z M&\!80W3RN?@_G#BO@>3,3;86J.6UPQ!/D#1T.'4 :!TKD ;PM140WGO!)Q.M MIRD1EAS%"SX"""2,*+L$P"0"A=J^7Q^@9=E#!\R/J6%$T *L=V1WK/8V2AX0^;2961[03I48. M>4L)$Q;/"AX0YFH7->PEIA.@W!\64'6$\ >9W'W#S<4L[W@9@GMHU+>@"9WZ>QHLJ$,7(XNUCZV>T@Y/9_F M&TPOX0V>QUU%L:^_Q\EE4;FE"R7^+Y77=(X'(U$O\.Q%B;MGIE27H85(G4I1 MA)1T[>S1(\@<-BQ? SD/TVWZE54#-V7IM_T^7V]T1+.E*H D&MU84IX72(A& M$5O\6^$T3;QV\]@[! P;=.\#0L?SMP%PK&; ?IC/\G@Y6 M@#>BM%WFQ)=R6!8$UU)IH53U1N7[B!DV(-X'9.KPO0&]\@DFDW)M3M.O?OX/ MV-K2R"NI@T'2N5J-^PVH'$$RHJ3U#GR@7-6>R;*?FH%;LM01]_WLNSJ\;P!% M'U$<2, 7W,HKO%\GL]7,O,UF+ 3)DM#$N%+'D6B9F\KQ'JX=V7Z4 MH(&;KO2"I7H2: !.O\ 4>33!O9REB_%T7/BS1&]WLYV$%[%6V9-4A@)(R@T) M6GC">4@J&HA$Q MD"1D&X@,);S&0)&@M$[@A,JZ=ECC<8H&;K/2"Z0JRJ !1#W@T4B8*!,@V5;( M,F(8K4G'M$,&!#F-$ZWY*?=%NB,7+::.81W9%J75OZ" M>."1A,A+U07Z! M3DV)\V:9I5%>$T@&+P15:K-!H ?CLY9Q B$,"34=ZH';%E5JI+@BMM8]*Y M=F)=)=*[1>3I'PF10PBU 47WV+;?H)DP/I^NYU[$J\]S/UW@%@L'IFGUW60M M\_2?EXM5X\JU:5'R+S3(;'T9C>$#^NC&>1*$2R0G"UI+YESUC/:>MM+ 0(#G MAN4!1^.Y,-+P4?GK= Y^4LH'_L=L4O*0?O'C:>'-^^DGB)?S=2>$^7B!?_4* MOYV>?X#Y>)9NNK1D$]&LUI0(5N:F\52*IIPC(H8RW3KS6+W"J*^]-##3H-'# M\JPH:?BTE"U_A#CQB\4XC^,]Y5!\UK/W+]^B6OGD)_ ^W_+FAA%:A"AC::UE M';H2I?.-I4*41_+ K"_=)6NW@^AM,PW,:&CTO#PO3IIH(7FB.$:1,2\"I42Y M$J9 MTIM EJ_*K#Z6G&)"E9+>ZEG/>\GI9O;_H?+H:S&_ 1QM.F]NBL%O&Y$D8SG",G6'CF_AY1AW>]G01%@CF[+_1+O&YYQF9QT>!50 M>Y3&@20.>Q6W@,PJPOLQ^DY4[0A]T%H#=*3HOVOTOIN?HAD(IC0>U(*7)*-$ MK$6<,. E-3EE27*YR$H-),I$4$*]H)Y2 MQ5GU&N8^]M%F,XX^ /]LTC[UM>_S8+;%CH$B%:V)?>-*>K0?GMI0_3D3CTP] MT9:*K((AQAI$-N.9.!L]?NLUS:A.>?682R?"3I^K=+W(Y_)V.#*<6X]'E(B< MBOUM@ 1M- GUWTCN4M#,Y(A*6'@X6NEH?C=P&=]0O^9(4=2S:3FM M9]_'BQ$:%#)H)DBFH%#Q2X]\24!T=%(%J<#*VDG+CQ+4"):.D/0^T)S,]@8P M=&\/KV87:+N.LC8AB*2(<<81R;G'.YJAD1J#U$I8KFGMJ,U.0AK!S.F"OO]6 M:F:EYH0J3TLL,Q'G0B)1>04J>N]U[?*;!T0,_"9[ MNF#WMQD^@LL-P&1'6]OKC8#*)CA15*_$$X1^+['&H!'/DH0<.F M"=>'43WN-P"E^].@-P="HHBME81R)U"?"DZ\9)J O_OIT^#(]]G$TF;V;SW_V\S!+D-)4)24IK/&=. M*^*"T"0YFC4#I9FI7;9X((F-^/E'(N)A9XW>Q-, ^EX^-O>&E^&Z@7)BA9"X M%W#$9J>(.BH8.@P9TV,*)/%.>>L>CO)OO6 KUO@J28ZC,Y\S!5 L<>-KM_T^@LS!F_0^KV'0 MHPS;A>GJR.W9H0G<0T!C2%G)B93*$>\C)RFR8"*EW//JHU@.IG+P=L!#@[26 M!-O%Z/H8OK[X.IE= :Q'LU_.XQ?<[H>)GRY&&5A29'. $K&VDWXDJ8-W_1T:K55EV2YD5X=R[RY'I:=%%"5'@)I&G+C%.M.64 MI1"5R[6+&X\B=/ NP4/#M:(<&P#K'3]U?1+/(K(1*1DIH92'[ F795A3Y(E8 M,!G=5:ZIS1"UJ0W)1\@9O._P,+&#$V12N[*@$LI6!VBSH3(+]5=8?IFED>.! M:9,CL27=0FHGB%/HZ65-$Z/1WO3<-G")# M2BU.F5XOP1.?9"3:X'^,X@+W5QEEA[=/[[65U[/!Z7C&-]&F"'C-C0]":M%Z/?AAS1I_B%>N)N#0_&5Q6N?@()WT28@2[F!X;UI+ M/',!O4H:%/,NA?1<)^-Y.DRS'^)-K U M.,"/IJ\XX&RX)(F@DM)I%)X 5+* M2YA/4PVRO/@UEU+U0SQS51/+B:D*KZ=UG+T=^3Q,!P;E@&C()<^Q-'>2B1(F M!)/:)- ]% D?E5'%?IQ'J>-%T B0]B?P\&@EBW@J'.6!2"\S"2($8FVBD+.R MC-5^6CHMH8K]$*]'=012%5W/V,;-+[Z\F1T*27NJ[!D!ST5@IGE,S_,9]_& MR+D75W]=0'H[O1DU?1:7XV]K]VK# :,4$U%PXG09/0)"X@4N(DG2,)6U$\G6 MCJL?3F4CU1&G(FA'"+1/<340$;H;Y/7!&J8%)<*(A!8C#20XFP@5X-!BC%JQ MVK7*1T37^X)1W])^-+Y^".L;P,V=G-&2\#F-XPG'6][+Z!U32*B#8R)P * MKR!9^EE$W [URD#@"K*O'0-\@J1A%>WPF)GU)\ F\(@KQ_%*GOCU!*X?L\XN MRO2O?ZXS24-BVKK$B0 P1-H@B@,F2R5I9#R%Y$3M7. N= VK/!M$9F51-O'< MLDW]^_P6!3P]'X<)G"T6L%R,N+?,:P'$!,9Q%UX3YS4CBHO((S4.CUQM.^!1 MBH8M?&L.E!7%UX"V7'%M@5MY,YN_FEV&9;Z^JG%VK'FH%=!7 V ;O7,_1LR$SFWYN2UY3O222BP3!&T)@!M M"C1^O7D)JZJ#A).J\&8#GBRIU@%$M:.D5CK)VDWH6NUEH-U<'$D] [44"-ZLE- MR.HEVB'GL!A1J814/!.CF4;KPY.>B8$ -JWU?/TE4:WV(G@EPIXBF M4;2M3([[[,,+9@2!)69I(,[Q4A92&F1*R0C:']I8)W/@SW K[Z&NM7Y%SX2_ M*L)J%(@;9?[!7ZTT.:,JZ5*EJV.01-+DB??2$IIUY RW)7W_^+M'5&N=@Y[Y MGCU&-$U:=ILJ\8^P:N+[;NS#>+(RDD?!2I^T#\3STMW5>(J'*&8"RED6)1@. MM2/4A]#76I^?9T)@)8$U"48\7?/+NWM2RBH7(1(AN2N5!+BGS",Z;$8Y/%Y. MAMJY<5WH:JU_S_.IOU,$U"3H7LZF*U;]?;S\\O)RL9Q=P'RSP:M1S#IP3O$0 MB6!P>Z$T,PB!2,O!>=3P3M?.%CN0Q-::\SP3%.N);4!4E@SEQUCXKGR_&"7' MM(H!B&(9.9<3,BT)3X3Q0EEJ@T;KGPHV" MR8IY/!"9NT@DEXH$304),2HK34@TU2[K[T[=L([L\^?%]B&TX^$XP\/5)QS? M3K_!8@\C,^7!Z5)P137:K9PR=-Y+ XY,%7+5>/US;WX\*0'-ZZ8.MRT=1F"LC-$$DO$:0>8Q-#]"5D10G8P';[6N MW?7^2%*;-"![0^@SB+/%R_O%Y6(\A<7BNME(8?E-XTGF3$J:4:)*?;54/A(? M#2,<3'0> HNQMGMS"'W#/ID,K4%K":Z==C'=.3KRT67%I2-<,K11HI7$\8A' MCP6C MXDSM1.<.U.W; /*<^,RYZ$UJ[C_68\]=.XFY%X$8#W( @$S8A, AU' M37&'THG, BR:53 U#H:<;>S]533K:U7"QYYZN)*3V7)VRA?=?B_06 MK[_#/(Z1G2-OROR\0$G.*N -$@0)60K"7=;X-=51&U MH.SN;V@]%R1D(P7UBGA5BA5*;^E@HR192HE'RE!G:G<-W$U)D\[QLZ'K<&&T M *FU:D;-7-ZZD4OX3>E>A1R<7_>^NG[NWL''D<$]"4^V8ALI.C;!8:GU7M.(M < M0&2(U8=L=J>N24^Y+XSV)+0&/.77&2E"A^[U=[1V\>Q]1*"_GY;-EO^7EZ5O M?@*K:AKDXSCB,5B%JZ;I[@^V?O/M-$XN2T/:5^/%U]G"3WZ9SRZ_XK_ [^/J MB%]"NG[=QW,^HLF4%P1T&L&4+'6)O/.^%.=8-'H8TR[43ND>?M?#JOC>//GA M&7L0G!JP;$[BS;H-_\,TKFN.;4MA+9D16.1"RIE09I%%K&30V(!>;*1:::<" M.A25#]OS[G#8>ZFW@]4P3!JXQ9Y5P0AD C+'$..-(3+F,AF)"\*49IE1I0*M MG9'0W,W46SI_FP>H3XB$RE+CHSFZ/\QEXH%)SWW*0?50I'6/BH';P_2DX M-\YFI4/UQ/G#*#Q5D^Y8;==9B"PY96TBKDPXE=YZXH5"CG@O2XXZ"%H[>-*- MLF&U7H]HNJ_>>A!4PTKK(WR#Z24UD[C[$C:J?KGB65N@:V9-:4I,G%2HC<5 M0!.KN2<@J? J,^'8,[.@$1W4!X;N*Y]>I-2P^KGI+CM;+(\RENY^0"U5] A9 ME132G15NH(-7%@@O,F$J&B(SH'S!>$*52,*&G!_$@*K-5KM#R$F!L#N?N-/> MU]HR "!"!%N*^3@)G.']">AW6)J,S=TB74^M-*R^.%W$=\)65=G:L$IXX\?S MO_G))?RZFK&]=AN/40V[/ZB6BNA 9B55<;/2K=!OX20HMTR"(]1K42JU&-X( M0A$:!=X^,@BN:L=3'J/G5"OE)F+P=HH?>+DW9)!\,#3Q0$2V:'UK)8E5#@AP M%5F(P'+U;HT=21M6YU3#RGW#I _!-*R$SB:3V>^X8.;NVS<,KHE").$)F;E\X>2,VKQ/.&ES1'71@I>VSQ[DJBA?:+3T/!@ M&&-5&32L8#9MSOQ6A[.26W*$?MGW4;742R=2*VF7O=W?MIY]94(WVI$H%3J^ MACJ"+C40G77F7BMM76U=\R11%6J*=R^PZX9UH)+A+!-E2PT6Z$A\=IK@S6H< M,Y8%>#8&-&?_U,7/CG+C?N34L*+Z939+OX\GN.-T?S;ND?KJB4^LEE1P .&5 MM-=FR;.'2]XBY :)$*3,,3%B&45S7"E*+/>6<)$T^*PAV]I//0<1>*I6Z[38 MUH.*%-I;[XB2!LT&SQV>%V $#ZPTTB258^TZ]L,H'%:S]8>M^UJN1[DUK.=* M(YSQNN^SC:FFXSB174F];ZYW=6V\'!%TT+ IG2590A@=# M1$,]!Y*"2]$KX96N/3?R( )/KBCJLMCM,0E:1!%#QOWG$AC1A@1J K%4H$]4 M9E7PZH5U!U$XK'KK#UL/RGSZDUO#ZFW5'>?+;()27!2S=7EUC%;;\2FUE-E3 M!%;28>N/OKTG&5Y227KBRK@%F8PEP>!7$5*DR4H?JT]\O$O!R459#]CVVVP) MNX!L<2^)X4G12@("&=%L(PO$F^A"#DH%73O#JC-QP^J>$S#QH!2K%W&TKE=> M^$5YE[PH<]M7'WJT;GGX257URQ.$UGK;OQ'WJK_BS6+7D_Q6#[B?OB T0R%G MTYCQ!G]2*"IC$(1&&LI(*[QQ8O(D9QJ4,=%S4]M2.(WB4W58Y]5?;*]^>Y2X M%]Z!0S^'9?PCE[1F4)D$9[5393Z/J]U*ZD22!TY,>#Y\WM>/SRGJAK7F5H'E M,:IR^Y_7TH][2:JD%&\^?X+'Z!E6$=7"Q-[ZY5,E MT+ *N1Y44S9:'N:^%U5Z5!KW[@^JI58ZD%FKT.]VI;.;E6YO+>U,7,UY#.!+ MK2;:]S9:3H!1$25C/,7:'<@?I^CDTKSRZ;_-IK/-*,'[*]U"7CD7)&A%RDC+ M4K%:2F6]()XK\#18RJKW1>M.W<#E=/50\Z!.KA\!-:R3?H/E>H\?8+ZRXH[1 M1P\_I)8N>H*\6A$F/Y^BL!>;16[M9F-CEMJ2(),BTFA&@L> M<+Z/EI,;J][[W*W;548@:.*M7 MP8,6I%48W[ *^0C+\3J9^I/_MMKIQ!\53MK]0?5JU9XDL]ZCVXV7O&I MEEX MA\T< ^=X4R"4I#.(+(_7B,6O6!0Y2F-$"+7S$P\@[^0L*5QGOX%3"&/=[]0JQ"=C2$2&1T>.)$8<<8D8K0(3D3ELJ^>,74DK8,_PO6"M0=Y M5,\AR8:5W"\P.Y_[KU_&<:MSUU&I5#L_J%Y;EB?)?.;RW!Q0TIPZPA0KH%.* M>*N!&'3;H];>25;;B>NY/'=5VK63T;>HIR8+ER,G@F>*W@%3Q E5$FZ25,QR MQK1Y"BD=UADZD[P^!.[4SU5D>U3F\>A&)'L_JYX5U878 M:CIF]V*W=0M,!R6MPQNMS!?/S)4QD)Y02(8++R.XVE&2IV@ZO>A_]^?ONENE MR($F#X1!*:PHC' F.5(FOT6=O9759Y$?0-[0RJDB=A[6_/=S9CY9XIU#B]BA!6Y=% 1X@B@EZ%"]&FW0GG2K M6WS3G><5+.)\O)HEN!+5U?K/K?(+:HU4CI,4RU#?7.(M5..E;BV7@#8$E4]B M[* 5?XBV< = ZHYQU8M8&N@C_,(OQHOW^2S&V>4J473WKB"QC!ZP)D:4DD>= MT!GF)A+%! 3FJ)&L]JMN-\J&G34Z'"A[E%\#J'PSF\/X?/KR$M>>QKL6R32M MOIVLYPSZ=JK4T<0..\ET>.P^CY0; M@/-?RR#JUXOE&'UR6(Q8RE0:",0IM&RETKK,<56E0:FG#ABWMG:X]BX%PXZO M&QYX)\BC 33MZ-]X?4!&-BOE5* $'3)#9$I ;&DY:[T/V5H-7M9N;;>?FF%G MN0V/LDIR:@!QG^"\L.4C?)W-]]L85#F07$BB0AG(P4S)\4B*<*&%S\"Y2+7! MUXFP84>B#8_#^M)K )+(R@@EBKY*KAXO_K%NIE*^&FEIG!8AD%#BVY)J3EQV MEBC!/&/,.W1_J[\2[R5GV&%BP\.OEJ1: -UZ1MK]^9SW3Y*P(4YRPK9VJ_X74B;-CA8 T L;KT&H#D>HY,8=+]C2@I(X_<$Q:I+Q/3 M<4L1M\0#%93%$'2HW6YB+S'#SGD:'GIUI-0 W&[:+V[Q:JMAXK5Y:T#*G!V0 MF'@F4@ITST-IV1IMU*E,61.V,O0Z$=8M@DU_7!S6%U\#F/P\]PDVJ5;7@=#% M;=^^ZTTQ@)S61<\<72[+* DR.&*5%9 #NES5^\AV(JP;)G_ 9Y7^Q-< )OF,2E(H\:"*$H<@XX*4_EL.OK#&A M9*2QVAV4.A/7#9D_\!M+/V)L&Y_WO[_>(*?"1*8B\;ZT#Y$R$$^#PE.H/ 7% MJ4^U=>?!1';#ZP_\%M.O6!O [=N+KWX\7PU5G[\:+[[.%G[R/K^;3<_?C;]! MVM[:EB5#2TPA.Q*Y!B(]&M&>B4P4-1X<'D]K:M?4'D-G-_3^P$\YO0NW 0!? ME^E\A#@[GXYO\SRW,CRCI1(8FMRVM$S@SA#' R7,&5!@LZ.\=F#]2:*Z0?,' M?MRI*[8&<'@S#>V+GY\_=/Z<=!(@(_FL]' ,4N.IXIZD8",WZ!HF5;NW^N,4 M=4/@#_S&4U%@#<#OMD?==LWT^Z_7+'V[>M-'I5]B8QM3A?D0N..)X#'+9*D!H V_V6-0\U?P+*M24L6+0^$KIQ MUAE?-A8RHSF(6%LM/D%2-^C]P"\[-476 )_@]^W"H#FLRE^&6'K2?_^_IBW MG*L8""@32]:))BXI3HQ&9\TEKR2K78%P*(W=,/H#/_WT*M3V2Z<_KV8NWJ7W MH,+IZP^H7#:]BZRFBJ930M>"H]B%TBMS+9*0K"<\*AV8U8[&V@D%@Q9-/_E8 MOY7:&3EXK0.AV;HRMU,2QXTEP&R61NB@4NW S=-4_0A5U8=@KG.2Q7%R.UJQ M?8-YF-5RGN,72)<3>)_?HE[(X^EX":L(Z?T8_TJ;;!N^:%E0;@C$TKF924VL M9)1$%G@4V2 [JU?0'$?JCU!V?0IJGT/"#=_1F]*VLXBG=;$*MRZ.O[ ?^;1: MMW=7@BM=Y3M*_Q":*T1L47"#1".""0J1R#2ZN=*@K>BY-Z4'#I,1F(FL=F.F MPRBLIQ"O _3_Q).22I@ICS?O1JME$>)(QKNQ#^,)4@ +_+O+"TCWCY'CP6N7 MB;"!$TDY$,>085YRIIS4P?C:-WGE+0Q[[?>(S_V:\OE%WX!K_N;V:EC%5A^] M+&[XL"B]LM[G'6*ZQPV).$K&.DF"R@R]3"Z<5X:BL52[TJ+7'0UK M6#SCN6@(& T;&M?/NL?;%G<_H%Y?Q[UD/7/#6*4T[I:UZ_WOMP,H>]6)\#D'W+KN%K\B;WI(P7//ZRW/4QM:[, M)TFL-9MT>YT;7%&CDW8.S:$L'5IJ$>7,)!INP8MDDZ;6U3ZC.PDYJ37HW4]$ MN_2B-'3YYR[SSUNEO8^>1%[F"'C())19O$X*BDK8Z@#V*303V7]&A5\MC'U5(IG4FNI%INUKMM7+WUU)N%"]R7 M<:VEI9=FD5B5.,DV"I9D$AQJ&Z*/T5,O8E?ZI=SKF8('XM,7/!"?87YQV]KB M?JP[6>IU#(4%@1(9K=#(W$$U3=$Y]82]L=0GBU(,2F"\,M"B$JB%0'PFC)I4_4 M$$^M)51%1=&I\RSGZ@&'!V2.PG94ZH%C7C/ M.U@5)H9%.P)6RX)@0$39YPF5I?F1 1JCM&#Y) MU#.D0@7I.-.@B*,^$LF5)T$+3:).20FFK*T^I;WU5*BZ6#DBS>D0F0P8*KWV MCW'9.+YY(=MRCZ_;0KS/FRW?V>U*']]5RLZ"3TH" 8DFK92X9YS5(^0,>]GVAYK]D8_3)-+ X^3M5MYT3CB5Y?G, M@T0=;3TRC&9B&2V]MJU1/BNJH797F"/('/:Z'0*,_4BP 9 ^LK$=QL:]O2KA MDP.M2. <+0K&)0E>)C0KJ&<2>/2I>N/@$^@==H#3\\'VV63: 'XW1W3VV!%] M<[DLO'UR[RD'I3QS1&BE2H)@*'6DE BJM'3.&FK[>@*I0?^P7RT_N\P; M]HI>XD_&ZX<@]"E*;LUX>@[3,C+V>)?HZ0^MY0\=2'XE9VAKU;-[J^Z K*%, ME ZNA/G B R,$^NE+ZERC.ND@G6U&P,<1.#I?8;] DH&Q?V,"9%$R@SMF*1P MMYY[8A5R@&KF1-+<>E/;)MU#RK!.4']H>=A&^'1)#!URO+6=/UU^15U3^.8G MY2G[S63V^]MIGLTO5J*['C?^>;9NF_S@&9M1IJTE.5LT1ZC$S0LT1ZCS$A\EX78+R!EGH)_\+_'RSP6Z^/ MY5'N]=[/JN55=R.VDC.]7N &9=PR(64&$CES1$:CB6,QDQ"I#!PLE;QZ&[T[ M%-1[OOD\7R6L7ZW8^>+JY<0O%EL!?^N=4Q3-7+Z:0*E*1@@+I$PI<&C^-C_#E-/%*WKF <=7T_4,_L^KZJNZ41TK\MJT M7Y4"K;I%AD+4!W]UKYV08511O(^8 UH>DP.Q*I<(,%UPIM6(!]@/IY=%P7>/AE%ALUZ&TS Y?%/1^F]^O8(>'1@#>]%4?8N?.5HENWWUZ< MQ>7XVT/73"5NDRX3677)5A$"B#6>D4A]DHIRFGWM=_'3J1XVM-D$\I]%X'\ MB)_-YQX=R,+B%U>WOW+-];/?_3Q=\^,7_,4R"VE]\%??O4)YO45/<3Q=C..J M.NY^$;\3.M(D27:L:(& EF".I4.4,D"C,D+V9S /L.%AHZ\-'ZQV8-;HF=SF MQ+86*MM=<[#T7/MZVQYQ>]HH#UE23[(PADAI9)GO* CS-B8&,EE;>WYVW1T, M&_IM[-0\$Q#:.P;AOL[X",CB<409K/AP-DWW?O+7Z7BY[YH&G5.R3I'@C49+ MU'#B?1#$T Q:@5*]9==6W\_PP:=VSDBPX&DO0/SX)*]\>;*OC],6+Q827 Q2"? )O'K['@^CSJ;1",EJM2>2:\8V@QU@&_BBY1&0V H_UU-SNE[]-6R=Q1AN!C'U?+).Q,;WF M[L+*#%DP800Q'$JO;N>)-3R1P/ D!,/16ZN=8',HOVE4)O M@"M'LS(TYMH6\CY:*GH*]U9XX1?CB.?LU7ARN7PPK(J!!&$@D4A#Z7W@',&M M>Q*\EU&$Y*7K+V_G(%('3NVM@:%'G(/>A-:47W V78Y3V1*Z09\@EN()-"M? M?X^32SSFZ]D;%U\O-[,Q[W-E*_(H\(22.Q7I?_BI1E?["M MM8MA/=Z>$3V(J!N^FS_" + J*AJ'R]N(^I%SPQ[[P'ISQ#J37:]#Q6VZ M5'G&WA"PP^L510%2JXJ5*,JPVHQ>KQ?$^<1-8E'3ZJV^#R#OY/EB9> >I&W& MEX>9K<[[]\O/PE9?+\L(DK'C 8B&&@B4P[$\X3,32Y&&Y0UMENK\%,I^6-,4SP& MB\\OJ(9OW.L,HC)T^>KSW*-M$T_V*Q[]Q'J.17?"JUV]NY?<0J-Q)G!&F%6F M:"I)G$Z1).]4D#0;A$KU._=QFNK%7AYE^-:,!Q&U!RV)YE#&X7+D 2V-@+AP MN'^CO:F=ZW,HC4-?LQ51M#]^TH.X&E9CO\ 4YG[RFY\7>^(;O(*E'T^.=!IV M?U0]AZ$#J;7>7>?G?GK=RQ7OT<5L,DX;Y_7#UB96W;K+:"D_^80_@;OIHWB+ MJAC1]A*A](A@%C$"*A&6I5$H9)]#[;;^50@_5??]=GD18%Z.TM?9?%G.S2I,DOV4S/P:^RS8^R^TJLDIP9> M.C8[N6EK=K,1Q7QF-EL2;1F=%+(K 6Q473';,L3!/_ +J@'N 3'#N@;MX.TT M*0WMJMX.@+ZX&"\6XW6W[U+OM=T!?%T^/,K*LX3'AUA%BP\>.'$F96)-,."5 MDM2RIR[6@U<=-EMN.)SU*YX&U-SN$L2'M>WA?K')37W)?!S7^=L7U\TFKKWX M43"*4^8RH:+T>72B='X.%K_%'SHJ5*+5.R7TMIMA"[J'5[2-X&1H37UT*XB; MBRHCT7A/K;7%8N1+.J^+@GB!.D,"1\7A>"0TF!QC,-0XV4F;UZ9LV/+L@37^ MH&+^PV)\?:HG?GIW]R-*@U,)[T"#EQ]NWI9*'9,)XTEPY9*44?6+\3V4#5MK M_4?%> TQMQ^_^G1Y<>'G5[/\>K$<7Y3XW5\7D"\G95S/8I9WC9<^/=)UPJ*5 M8V*UMM]4]$QP9@RSFE"E%9%<'"CE,@6;8@.$GWGF(3EL9M^?FJI'R$\=@B(]KQS MUA!$ [[CWLG1+ZX^XT>E 4+M@'4' MLH;!81\HZ#KY_4B1M(RRLJ%7LPL_GHZBX3(+X8GS@%NRPA!/50F_*!VX3L%7 M[V+>@:QAM5UU*'2%VI%R&=KM>3O%#YKZR>3J%7R#"6XN?9KE)5J\\"L4KVZ4 M$J>16T6B<4"D"XX$-&U)@IPHQ_^SE#K=DT\NU2ARCI7LK#$#S&]8 MA.RZMQU'J;8F<)*U1P'N4)>SP*)5M)OW^_1:P[X&]0J;RHP>&C?H M.H\C;&_FS>5\.BY#7S>[\9'Q*"TQJRE)R442=,C$&:Z2T3RE&#K!YLFEAGW; MZ14U==E\-&B^P3S,*DRB^EA",ZN+6S.9);.< )2RP2P3049(DL% SM%FQSNE MMSTQ5>IFP6$T2X\&\_'L''@:V8KH:_ &--."B8XP(9!L'=GZU3%;YV+2V@/O M5"34!05#&B8G".N^N(_@W, "_W4\'5]<7EP3[H.2/.4R&JAT#10952':Z@1< MUA&H5 XZ-3A]0N1W%AU8Z,>(;%:#?T,+WG_?(AQ-7\\S=<19J4OZE"2^]&ND MWG!@3#(1.[6K>TKPVXL.I/5K"?YH_@UM'3YVY;T;3^'M$BX6(R^#II *Y0__AOH6%YN>C_$ KSO4 M]?Y^NF_!YWT[[;3MIMY-\=I4/@;4IUI3(J7CQ+&@"5 C*<^B3DRF4/GH M'4!>H_?U$:B8/8^(VD;?[<9^\Q>;X&M.DD9>V"@,*W7=B@1(D8BL1- :?;+J M'>,/)'%8[=@;5+I#\F2Y-0#+33^!5;%LJ8[],OZZN/;=(?H(D3,2)46KV)?! MVPY]=YTC57C&HW*UFR$]0DZS<#L=!K-^9-( O#Y#_#*=36;G5ZM\U@>L6V]* M*FE2+"FL$429@H)',]%(5.34\ "&Y=JZKA-APS[L/B?DZLNIA?>:M?+W/J!S M;XA#2Y=(RI$M1I926,NT],<78\.UO P#5TK=4:W1Y*(BUN MD,';WW+-"80 +*B80'3*0?YCO=D=)*P];W:'<&[HIYL[;TY)<[!&6A)=F:_- ME2161DZBX='I[ 7S-9YI&WRS.TAD>]_L#N'?T(*_\^:D@\<%+!!M ]I(,GCB M GZKK DW((O0ZLRE>@3 M%2$5MK: MK6ZZT-5H%/!(+'0.NQPIF(:?[5Y<+I!GB\59_#^7X\5XY?+7Z./5Z7-K/<(= MOHE*;VV;A5_.+L)XNGD@64%EBY:;]Q#C06414.'EHO^X\<1FZ58-$&@0++CJ M0:W#**S7KW"72%Y<;7VWOA$XV@5,2DE,HII(= NN$_NBT2XG-"E2?_T*N]$X M;.RO1X3M[U[8@_ :N&]W[&KEJ#*FE4HBDV3*U' )N V_ZF>K78A&6"YJO[?M M(658J/4K_UE]832*J?+E'#:14:.BTM)&8H.1ZS"(YU80IR.R+6G\0>UJV">) M:D.EG23Z#G Z7@Y#.Y:?W[[^#]S.W;%W_;/,$P$,:6;NQZQ#T90F:21J5O=_MXEVL/&"7*<56=J SKG$\S'L)J9G<;?QNFR%%:^ MO2A)9_.QG^S2W9M$>(U6@+9XMFBIJ:*X3U<2X9F)*G*@7OOJ8QB.I'78UZ]^ M4/BL\AM:A:UJ?C_/?8)/5XOBD;^=QNMM&.]]1F5/+/6RZ'E!@D6-CWO0C'OA M<'XF*/7"K+J(&X'?=1G'Q>7:M]3>;A<4O M\]EB,9(TI1@+NS@S>&^OQBE11KAEW@>6: B=RGL/*/8?(0X.Y^._PGI;<*MCO/8WR3276\ZG4W3._SQ>+*:Z8M_=WD!ZXCR8A0] M3Y*B3R&5BB5J'-#% $,"VB$.=/3)=$I?.$W_G;B+YJS_WK3D3R4B$K#E#LQ:,,:6%BR<6N"' K34^^>!E[6>CS=K-.1-UP'44:QN Q(Y# M\6$^^S8N(QO\9&LH[-LI:E9?L)9RE_[Q<+*^G9.^T.D8"@%+/ M.,F.(6N1(\0Q/#?&,SPBBB;&^W)%^MW9L#W?GU-7#@V+PP^+6Q^6*9R7@N+/ MC9Z9VQ29Q2CXJ)1,EG!6&N5&9DEP/!&:C% HSZ;!?)@Z3M!AUY$%%@T9-DN@C*K_NQ>5M-)BUDHB:"41 MCL&Z&Z&U97ZOU]$)BQKB_CB^_Y>T6 MA)R@W_%TA:/$3T!R *N=-)!3[KN^A-8V'GF MM _R^>HP_^ ML0Z"RHDML0Z16P.P?*S]4E: $,E $H<5VQ()EB+O+%-.@G:\ M6QN1_XHML0Z"P0$ML0Z120/PZM9JB5(=("H@>G4^@:)-F[(@2427*$@3]?]K MB=4KY.K+:=!!-IT"_M;[;)3_O^R]:9>;-\XV^(MPAOORT7'L/IY)8A_;Z3[O M?-$!-UM/ER4_DLH=SZ\?4*7:-RV\=5.5[DZGRU5E$#J[V':R(:.RTQGYJZ<#"/5OCYXPD"YTH8 ^%^$%KZOS# M!,A1AB!D]J9UA5N3>52LQL4%F MSEP$4[N'JB0X*<<&8"9Q=!*+'NQ&8QB.^C#KHX)VP(UT(()>VGXZ7U107/PF M?4HFH:R+LC#E$IG,D#D=KRJ:7-\#*N"!9%)L-MJWCN6.P5 _3PV;I M#Q@=[I*]M?-^]34O-B^+:H=>72P'P6ME/-<&?&*Z-E8Q+@HMDMY[<[0@L(]G M/#WOB:/#H,.M<(!=N"D%;QVWR3"R ,Z20:B55F!7<@*$C&4@F 0(3",S70FQ1"LO^1;W3 M&_P-4^>;:@3<]+F!#LV)W/C!) 531)(:BJ\CJ9@)X+(5()4BES=YEL(17L8T MY&BKK>3^YEMI+ 2]R">S#\A$H G!:H2$JM9*6T_'M9.0L]6I>)F,VJ[%[="4 M;K5;_-]AM_0'C/$WRW$LR.7SY(_Y1YZ=YXG!'+AA#@P7'FJ^$4*DHYJ7G**2 MF@7>]27JPXR)Q% MB+[*8*@)1HU8V&[?_"UJ%'H R?ZYN_D*SWH[6*Z:\;R_[,5S2T837;R-7&00 M 2VHG#79CZ!!,JT$)IZM'2/C\ S9VVV9OW4)0R>8&7$W76KKZ@JLH,BN% _. M(5F!$E6=%^+ 2AV4DT)[WGH&T$ZWG_QO461PD%HZN%BYI/O#^2)^Q66^WDO7 M.V@Y49E[%KD"[5GMCEHIK 58=L!\6]U#]]>H2?6_O#R MP>6\W._A-R^78KE78X"SM/J:IXNKOW0Y(?I'39TU;80X((5#MD0\EF#':8Z8 M@BZ.M 9:V0Q*1P;!!P\VBQ1-CL4?X]%23\T1 ^>VE&)!AG4SOY(!(T_@K$P\ MH:N/E!M+Y$4W1]P%801VX(;LTG7&>"PR% 0E-4_@K$-!J!72<)>>M ML[EY]Y363:7Z::*X$TX.:"JUB]+ZQN.#+4(D)X.H#E4PV,6&2!>Q*6-XG7P-- J+,G%0O2V2+9 MO;&;_VTJM1<,=F@JM8M..H#7K_E'/IM_KT4SEUV+/DZ_?+UJ4^2$-SX'"0:= MJXEG V@,>3 L4F2:M1#-K=PS))U6(ZE#8-92-QU [;$NO(;QHCP*$-D)4%(8 M<$;0,6" MDI"\M:F4[#W_;S?LW56_'-S14])]8(L?&)MI]:.H#8XU[F92:]Y D/TB,GIX\72\+*J S%DC: M.X\R2^%:C[7*-@ZS;"G2CJ^8]O4BW\Z__8-%S_G9?/G9?AY^9/5 M(N.W ^[(=ERAU1W7(8PUNJ/:+/26D/MZ/EM?$_QKNOIZF5*XNCJPAF$.":&L M \@R$^DT,$HX"D)EG4N"K>JB-L.'_<)& DD M371Z'R '"GCLL/WM^5F9GIW5VVE_-\.SG:AHOT^*!TW$91 +%JY=O32VEPPA1H'8E M:\/D=CF:.Q\\3G9X()4?(K2Q%;[N#;2AV[B@+,L62HADYUBJXT>] *Z=##H9 MH7"[5H4W/G2XR JZ!Q2FYV&Z+A@(0#MJCH45$GP7C+0DAD;4C;& M-)_4]2Q5XX:O;5&P \3V4,G8AQ-MO_/%8CK[ "_2)D'R7.&TMT;%2\G^7/TV_Y#@>8@@^6=DQFGCAP M 2%XQ: 8CD*22Y;D=IAX\./'K688$A&'2W-L/-P_JZ]O*1BZ*(JV$'BM&TLJ M$A\D%D1R_5@JU5/?,Q4Z\KU@^^162UEVX)X\DR=^\U<\.Z]7Y_7>B?ZIO10F M)!I.X1E%!G0$T]E+0;LG_Y[^:)A@!3F[;EEQG(N"A\CL*INZ)S[FQU56_Q>$ M?^"B&O0?^?";P'L?U?C*[VE2CWRWIXOPB7$&5H7ZV!,]Q>$BDKML4^!)9Z%; MS_49^&[OJF1UNL0O7Q:UW0HIZ_WE!>N%A4<=K&+&0')1@\K$L3<\@DN>!6FU ML:5UN?I3])S&E> N6+E70-Q*&R/?_WS$V9>+"XX44Y8RR]T$%L)CJ&4K<^^(\1)W( MT7>1CI86=\(WEASOLF=/9=U5]QZ2&UGAOT]GTV_GWS:$2\V4=4*"UK5W0>(9 M,"4-D15=(N.\^*U.CF=4?FO1D96^C\KF+>0WMN+QKQN$QQ*0)QM!V_K$150C M5Q@"R41GXBEN64[[G.)O+CK>/5\3Q>\MOP[BWT<.O.MX38<4G&0<>+ $9*L\ M!$7AE-'D)+&8F53Z."[D;JF4P=)LS5V$050Q=KKMTJN^]+1?XRSFLXO'FQ_R M8CI/DQB9$YI"?PH#3;T 3^#(1@)/F(2HOT5_XLOP-5WFYVG!&1CFS8C-(65][:F(OZ$!?H3"AMKBW M=Z?R;'N_\]2R71J?!E :3O9CH^IR%]1%< M?7UI'3GK+AM +2GL"\7S(K="PZ-+C#L_=3A,M)'IV,C8H/G&?<4%$V_GB]^G MR_6).LOS\^7F%I3XG61!;' *Z))E'I2QM0-E24#^7;(B2IGU=DUP=U][W.&C MPV%I8"UT$&P]E':^;%+Y\_:E&6VDB43&O. !>(P%5'0,G,\6I'->11,B-A^8 MMAN%XP[H' 2)1U!5_[>,5Z_U[HRSN2& &F/,OJSF5P= PZ>)>ZPZU'/%0P5P MY&O.I 79/UG;WA@'*E083@^8^T9[-R*JPD@,?4P'-HE?>>\RY MM;#:@ M8W:&<6^L;%V*_R AO?3B' <=\]:JZ@!O]X6'#\MK<^7A12B.'"VPSBER?L@# M\M9:X"A"ECSK$%L/2=B1Q'$QV@ 4\^-I:.Q@_,JANGPGEX4MB@N(MN:9.*OM M'06)3;&0N##&W[V >BXYTP,F!M7@@QF:/<39@2UJ8-5O!H3.L:@XE!(L!81( M 6%A FPR@CR08G1HW?>P)?V]-$OLXJ0=#1ACV\<[(>D-WCX2SV_GB__@(DV8 MU2A294:;#$H2;T[6"B:R'X$9*8O=[H)CJ^7&?@HU%A3F@^JE"_/[1!IL8K*L M3WT(-JB)F=JC$+4*@$EFC,RZI%H/4GR2H!&?/ R@_5TRDCNI8F]S7[,IS&G*W]E(E)4F14-+AH#*M/IX(*Q0&X*?3MJ^J_8QX3=6VG$ M%^3#P::]C'L[^+[-%ZN:?+_F)F@;"F<:0G4E5' >/,$!W'HF3')XKSO_EH?> MO:5&?,UW7,@<*.4NY@<_;3D9(_7GP($;46>("V*L^ 1!H"3FF=C66!8+7$;AT2O/(A#*MKW8>)*3)>;?^ MQ)L;D!=GO%&,;*\2H$H@ YQX!,\##ZEXVB>['7-W5QBY7/9@E3YXH!TDQ@Y" ML5M\O#Y?5%%N MR+/TR6.&M&]@^2U0'(=EA MBK\W(::E%OJ*Q-8\O;M@)$VD+MGQB* CXFM+FSNI<\_$4*@3R9!4>A!62W!RWI11?X9P=OH(+:KM["!2$,6A/!*N)&T1\H .0&O Z6)V:B5JWO>]N<,\-& M34<^9W;10N?!TM6$Z]\S+L\7%\G[ \*B)S^O50"T/=&-0IVK!7^=+N/9O*YY M[1YK47(J44.6LKXW]@)'9-T^&B2)^@YW B%U:?Z(FFZFM*G M_B"AUAM#VEF?\&SSUI)VD29G M*XSXB^ Q"]QN77-_][/OU!6VMV/7$VB8C9(]A0'UA* M[R 4+:!(3J%$G4 ;6X\<>Y"0_J"SCY;OWD8<+/*QX_;?1."@/[-BWD MWP&,UD5RM/+U@(QU4X@'N%O6,O?EPS^Z;#^=BDRH/)!4$10B!2!6.!":!9[J MJ$;;VAEJ2?_(H5T+0-U]KC*6=CM ]N_S6?YY8>_?GL_2I9F/,7&>B/9L=9W$ MK1&"R9)D&C ;:U&'UEF%ARD9^K:9G&VD/G??DU?Y\O MIY>3OU+,EMG(P8M,IXQ' YXY#4&A*\S%Q$+S*MK'R1GW5.X&=JT4U@/V+E+7 M)*(/^/UJ,I7/3/+,# E'DXML2NW#SBW$@B63K\QX\X3Q@X2,VRVI'[P=K*0. MD';]1.BN/WWM:?]V]=)"\!*R\QZ\KH_"%2H25Z1M%.OD-:^4,ZV;D^]$X,A] MO :.3X;350= O,O2'6%>7L[7R]5?<$E.M/3)*E5W%B,F58RQOIR0(&SM:98E MLZ)UFFU7&GMY9]\<+G??-@^IN_VQ.5_A6:/ZBJWK$.C>1QM=VB"KX5P6R03C,$Z%!%8?4FBO*Z#CX6&J(3VY% 5%IIW MC]B2MG$]@/%,;A-===SF[-79V?P_]>Z ]M9K(FNZJEOMH!YFSWUDJZJCG4AO MUGTLYNF/BH_K6I(HC5+"90I%4J@/!Q,$4\]@9;S6(HK"6J?)'B#C8"-U*4T" M_J_S\[ JYV=DD^?G%-1=+U=K^LIE39](0B=.WH7BE>_ *>P/&H0O)AH>9,&M M1J'L8JUV)7+LGF"'H>6><1I41SV*'Q?S'=$G:>X#%B;,R:V8IWF+K MKJ2*M7;>GZ!DWIC@N])KIY60,X+_(!R5?N!![*IJ(K #/ MAM-&\@Q\K%]IX5,RY.OZUIT/=R1QW,"A1R.XG_:Z>!"S'8,7OJ(; 8N"09*H'&E?MF^-^(!](X[IZ!'X#;0Z\F8V$M/ M)9I2HN(<4BAU9E T$%(A7K,UF8Z3+$+KA\3M?M/Z15Y=9L7EYY!<.2.((5^M> M!?DA2"\?I2;7W[6.I2+9S,^ M1%:X EW'^ZDD#6!"#385QA1/PC4?[KX%6;U<4[?$P_W8NZER>L9;96A3WI28 M4CK5RQ_CR.7U"<$YA\!"E(R1O^MXZ[!["[(ZM6[[0F%;J.VIE['?*[V;T0?- M\.SLYZ_Y1SXCYM*G>5F1EWPYA=DQRPKCN7(C0=76*9Z'#%Q*KJ05SLGMIL(^ MNU2GR-E7L_/!Q-R!?7H]__;]G#[N2DH;-HKCVA=.QMO5Z3+2(&#P&IA"H8/6 M031_S?0(*>,FGX="4TOY=P"CWVKNYNO\++W[]GTQ_W'1LV/#BF%(+H&HG7FX M!J48UKY=&DJVRABA436_S'B"G'$SR$/#J94>QC[.WI+V71U M?F5GD]/:2Q8@1FY H:+@II ;$*-17FL3N-VNB]JS2XV;NAWT.&LKYKU!\R,O MPGQHA_NWJXHN9U6P+).0^I_VWA MM;LR.H#6C0KF7S,1$:<7?1CR][.\5M@L;4KVU]]_E/E)RMHY3H),.9=-LH"N[BWO]15O[(JXG6,GF3#21=VWJ&F,&G MXD&6)-$+3T(]FLTD>CH-%P:VF+LJHMGKGQ%N.V]N/KR]Y][\]3W/EH]<"PYY M'7HH34>[+VTJO*-=J&H?.2HN(>0*[9SJR!6RF)E9K9DT,1WO@J==8\_GSY") M3E9';>FH\'8]9B0!,N5!6X^'E_CNUQGKI^/G//^;S M])_I&H^5=>];*^@7ESV0=6Y9=Z3.R&C!V\<@^*U-?2M8EGK[A4[$7BHF;Q<[..- M=N)HE=1!>,C9YTV.*S$+W%J&(4F!I76$] 9XQK!X5!RUR >JH$.8O-+%NA@ ML"IS%HEQ20>#LO65:+2 DKD4-+G+LO75QN7:?L;-J0R% MFX,EWY%5(;GDZ9?91>5Q_+GNI'2VUM!E[X*)SEFCHJ"_MBL"510"^G6 ;D0, M7'!FRD"8>IZZ<5,F0R&LL58ZPMN'\T7\BLN\*7ZG_?,J_<_Y'>O)&U3,<\A> M.% \%8H*0$>,&))ZRGF%.P5ER!8.MMX42'%4/OVM\Z6'C4E<%W[\'8ZFZ[R;],? M^=ZR%]4/24D,HO ZP:"0/+B!4/>PKJXF_5"PJ!J+8GOJ^H@(VV/J\:^>'V&R^5%=W(3LP[! /.>@IO:],5K4>N,M<4LG32\]8FZ M WF]/%9IBY#[DP@&45??2+QF[ _\=EF!6-OHKZ4*9*>Y#!E%/ M$Z([@L?"H$2KO- R%M'Z;O,)MCN7O[*:AOT%U4 M37O!<\@R _J4Z\R^!&AIKV)]+<2U5#&VOAM_CJ9NC]8]4; ]S'972=\0NU$" M?:L<*JJL"DL2*C?$83+@4]+$(6HO0A:BM.Z_OCN5W1ZW@\.PA=I&+41?OWW; MCL$MKOV"=3PQHP#7PT*"#O25D^!S*,@4$RG=0>LC+Q%;433N!>Q@R!Q/:WU; MT5JL;ZQ207)R::RB?SD1B1OC@/GHT7N;N&S]I/%IBL:]GAW3.NZJC@XFISS! MS<= H:0\A%ST$^1.NXE M\)AP;*; EU!W_M#SE*/=+^])Q]&KT_<6TBBWTSXQS[P)D!,3H")'")+VCBTA M(1?1%=;Z2O:HM],WU?'^GA[(:KA8"IF)5-UMY1T##+)4-R:5X)@QI?G4@BWSVC+DU6QVCFA]A?U! M.OC\GWSV(_\^GZV^+B?).4Q!)!#)*5!"^CI3,0$:^F\F+OFNQGKM.YWP +?_)^/B\W_F$Y>*T4HIJ"$)J%08.(84,W ;G> >M3WB M[=/CA/;QQJ4WS.ZCQ=.$*F$O3YQT6CE>!>OJ]:^OP^1K=PS:D)P$4)(YYB7" M$Z3V\6"F2[CNK,F3!.S;^?EBPJ2SQKH$UM:K:8$:?+$>F)2".54*+ZT?VNQ' M:1\O;WJ$Z\YZ/$VTTN].M)7*!!L@H*/XEEL'/@H!R2C#N-3:L-9C&?:CM(_G M/UVB=5<]GAQ:7Q5:^8I5IEC263E(5:8*R4_'* (@'2:V>!MM:-W:X@!RM\*M M^;OA=G^-]@W>>FF(+BL9,\G.8FVMRCQX+@L(J^A B5SK=$1\;GN':U\T!'?5 M2\>-\%[3=Z87#XEQEE[/UZ^+\RQ.\_(/7"QHB1_Y@'SL+A_?*JFZ-TN-,J,W MUG]U9_V'(*I22D$F"#+6!K0N@A/"0\$9 MDPM@R?B'P@)XQY3T9*OYW2S/#HAZ;-5Q\XLC JN)&CKPQ![B[6.>Y?_@V>>\ M^#:Q7*K E0"767VC7+.CL3Y3\2KG9(LL7#8VU<^0-&Z.<'C(#:&9CN_5G_!< MZD2@^:S^9'YAPC>ASS"^V7.K'<%5VXGA43RW$ TCNZ9K_:8BJ-E:I*]\"?IN5TN=GN[O9XO5Y.85+299PC((BCC S@6'03',DM&:Q&Q,@?*OX,#]9^XF-8'=M<,^)*B#=:"][$.#C(>@N %4)#C*7W*=#@T M!M ](D[)3SL$/X=)OP/X7!.N,_D(6F?PY"J $K5N+B<$C-:28))RO'6WS-W@ MTHF/=0A<]I/V:::V/IU_^X:+G_/RZ?P[>4KU=_#L-2Z_OCV;_^?=K,P7W]84 M7%76K85S2&'B<,0KMJP1DC.)2;C/Y<7UW/M Q\ZL"O#-7_$KT@XFX=[F]%*./R>)ER!5R)"39111 MU>[,@GP=([TAEITAEAIC\ !R3RETV<<\'ENCIYD+O'Z5=],?^P7/*,UM8$BYY#08Y;I) R2M@.3+&D'D96A^;(^8=_Y6K M++>V85AL/D#C*3D5@V'S4-V=NB=Q\<3T=]J>W\Z_708"?]+9=L?/ M&MR!V)F0H_H-AXEI%'>!FZR9L0G(%Q>@? ED7$TMZ$XI*"LPNM8O2([J+CQ4 M&W 5#5RJZ-?S^X\S!0:M71V4(FI'92D]>%<33790=NQ+9\7C[.U%J9((2EF#:I.ANF@&X8LV?S^](XBDY M$<= Z#Z:.S5@KI]AJN0-D](!#Z(V-9-(T>/8OM#Z?Y:/"&H3K)G7 I) MA\+Z;:>1!5Q(%I((VJ$7/)366?]M:1OWB6Q_@-Q)5QUT/GZ2KS]G:9,KSNG- M7Y%^]:)P8Q*$ES);!5*3!ZU$9(!2:+!HLRRQ%"5:%\?O1>A6Z'0O')U-M#CJ MN(*'KS6NZR"8=MH5;4%ZI#UGB1O$*,$7GUB6TGK7^K7:(54K_O0!UT(3?[=[ MI,F=0K(1;Y(FO.^[I+NBNKI-^K\&4NIEU??5O?WE'/H;?VG@DOAMECYF ?S. MHACI9:+/S*L,,B4$E(4,U.@>=2@2!#@DD(2B]689>!,M,[^;4G:*5WH[8*FNT?B$)KJ($A] MA*U/.$^62L9%YT*QV_G5@#!LT2=TAW= *#; M4SO]PNWSU^GB@I\<"Q81$))5JI9%U2>>Y&9R34XKA3 I-W^*_AQ-IW3G-@#8 M]M--EUB;9"UR\<@A915!!8J.O+O@0/" GJGF+1+O4W%*UV1M\;23_#M^C_MI M-8___CH_(TTMW_SO.47&G[Z2\#_F[QN6/YSA[(!X8J?/;Q4T[,]4H\C@8M'K MUV#:6<<%69M0IVW:H %M"N!C#!B5#TZU]CMN4W#04];KF+@FWW5/79I<9UT0]0ZZVWIFTEVL'Y](ETL'ZX<\'# M=9N@5W]-EQ,>N:ZG+8FHUK.84.]E@P5II"@V&$S-&T4\2="(+TL;:WX^E!HZ MP-0='GZ=UR3/Q F#+C,'*24+2G@/7M::TJ0$FFA+"*V?ACY(R+B&J*&BYZVE MW@%TJF,XGZUWV.^YMD&<\&RM1LWK@U-'SE]]1LVU!\NLD#(6[F1J#)M[1/1P M=AVDV'E+*7< D[M.X6+^98'?-EO(1).CHOC0>MI"*"HG&7)VQ6H?)/+6>'F< MFG%21,O\O-YVO9JE/Z:SO,KYPLK>8V]C=J/#HHT+Q)0D MN;&LP6E?WS0DPXTV@MUM /E(^+7[VCUB:1^ESX^G@;$!]HKTSI_DAB@G)U%E M,$Z2_Z@M@I/9@3=%>>^=<85OA:=GEQKW\F,8^+25;P]H$4]R8QA7Q1<25)*< MN)$UKXKT1^&1OF43XK-9PNV6&O?V8CBTM)/OV&AYREW\C0SI.XI:EQ.?K!!< M2A"Q-@/2-@%B8,!3Y-)9)(:WLR];+3<.:@;TG@>2= ]>](/[X-7YZNM\,?W_ M$S.J<$V6UT;PQ6%0BC:J;=VDX3%: M.DT!M,%5$P6,??3=8N+/V?DRU^CAS5_?IT3(]::Y8"P),NQ6:Y"!G#\5/((7 MJ$#R$$0LUJ>[-7"/16P[K-KI07@8AH:5?0?6Z6&C>U7R>FU]KW_GT@YC3L4R MY4(D>8,R6<-$,*;VKFA=*[XM;>-F78<"6"ME].YR_4)N1:I5'WFV7']H MBP'26WYR4P=J1T8:^4G7=>3OR\W%-WW(*VR6:]"$2M[E>]$KN&H?HC0Q@^69 MX*I= 2>2 ^MY*1B0B^:-A@^C^.!H]3J4JFO<4]HKTMGLR[IT;?G+S^O?V=#Q MZC^X2!>9\1B=4I+7_&&U]%%&"M.%A!Q+*3KX:&+KFNEFQ(_KXQT1L_?BW%'4 MW\%!?T$Y_?*ZD,6IH#4+"E(VQ(%%!9XS!JA=3B8D95+K^XE;!(QUAW%L0NN[CH#%Y;X(>M\^WMK@=:&(8]* ;-4*04$@21TZAG9&N:&-5 M# MJXJFR#GQ CHS0=_.S+.M,L'/J/S6HB,K?1^5S5O(KX,H[]-Y6$[3%!<_/^%5 ME>M%_MK+:"1GX&TBR\=M(4;(WRMD#+6BP)6YUF4GCQ(SQ.:-H>Z3 M,3)^&FOZJ8N?/<3> 7*>->Z/V?;?KMZ!&.5<3-J QSJ 7-3&GYD\"IY29@F# M,\UO)@^G>N14:A^'ZW%U?\IH_^.\;NZ-NI:O?N#TK(K_[7SQ#_J[JTFT+A5) M9L,*HZ"^0P**F!38E)C06G&!K9]4#,5+YY?[C3'9:DNT!$@'&^7J9,N+']-- M'O%^P?%\]B,O5_DBB[G\7'LSW_QY+:S\8[[Z/WGU,1P6BK1>TQ M7BC@1)\!=7 0L^-T8F:>?>NBJ\&8Z;P:8=BMT@=$7O)>^9 7TWDB$[+Y5OT] M/I'.\A1KI_Y<'%D2).T9)T$84YRW%/[PP?SZHW#8>7W%B>ZJP\'4P5;;6SGK M?_V39%:'8JTEP2=:HM=**G#&UF8:7E*D5H<@.*.8:OO(C390W-+B*V20K:9%H(6'">U( " MD#.$G$-M54[O+AW<;+E-063PT3I0 MG"<(HDC@=="+P*03*[V<6@\QL-5N\2]YMXP"A;&+^0]+<'S,,4^_KW[-9_AS MHASC%,8QX('5L@0Z;T?3=G>,[(6A>DS%GBR>+_I= MO9LM5XOS=3W$^]77O/C\%6>;$_&?%YGPU<4F?S-+$V1<"TU''9I,YQU%;> Y M[7BG#=.B%'0V# OXW8G>;D>\M&OWKJ'1@2MT^1+G$<'\:[KZ^HY\P1_3=+Z^ M ;H1X+/XD>MUS]OSU?DBUY.P/@B:2,-++DY#"?5UI$ZF-NVE4*SH&"T7 MV8;6H[>:,['=7GFI]^[C8N+DVOL]_-TW?]4OV[?\VVJU8=L [LYP'ZT!)3/< M11O K6<;2*_(*A,*"[DXP8HH7//A$KVT!MSJTO_5V?HCZ:OWY>ZU_IK2BX)0 M8S6*+"0X:\FT>.4!7:CMADW(W@F+V+RIU1",G'3+P%VP_'C+P+%@T8'C\VY& M5BY?377^;FDM.!I8 MYL-HKE\0;AZ.&.VC-D@[VWH&RM(>#Y9S$*E(Z8L,P;;VI)\D:%P@-E/[=G#: M0P<= *INL?>E/DJZZB^"&3W3ELBNX\:=RH#>:- )-9,)(Q.M072/B"Z!LX^" M[XUC/T3:'<#E4SX[J\-P9NEW7/P[UY*UC1N_X8?"M6R+M2!]M=/6D8FN;Z^9 M98[%: 2WK+6O]PQ-XY;$#P>FIKKH %LU&T $?%VW>_F1S^;?J\!NL\2+C<'8 M"-:G6AL6$'R(#!C#E-%P*T1K>&U!UKCEX<,AK+5&.@#9/_(L+_",.'J5ODUG MTQH=U0$%=W:.9C4'6VTQDM!<$N"UX5 \^9DI&,YEZ\!_*\+&+; >#FCMM=(! MU&ZWH49CA196 [>EOK:C2!R1S++APBK+(L4UK5LI[-YO_@@]H'H)"O?73@?0 M&J2[F_)!IJ@<1$6"4-I13,30@C5&&6LRD\T'H0S!1T^]YW>"U3%ZS^^BXPYP M_G@;\TRG">H0@3F*EE06'D+,=/@$3%%[[A+^M_?\D7"R=>_Y7936 ?H>:V4> MR*4UC+8QJHR@DO7@F35@4$1)X3S7S6MB_SZ]YP]!7@N%C5V5]%!7U"<;H-8Y M4+78*I<00!EIP O+(/'@@BO9B+MWE(]4%NVX<.=/HH\%O<%UUH$=?+BIN4?O M4)-;(Z.O7:J*!C1"@_6!=A6SC(O_=J _O@T\7%GC=Z"_Y4%\N!S(3C+:<..D MYUFA UD'BJCBZBP1S8 58W(,3J02M[)YSRS4^8/>H]JXECH9^XQ].S]?_+]Y M,7\_R__/Q2[!5?RZ822E6JN,!DIB@K8*J^-KI0">M7KN)K^F*Y^#E.__? :1ZC:WH*Y/FJU-5?! M,!7!2EWG6CJL+QDB.%:4"SG'8EJ/Y!NY5OO )@DWGFU_G)^=O9TOZ@\G1FNT MU@3RVV+UX\DNH&4(16J=R,E7F??64N-A3DZZ6GL7-+?NGM$ &!TX&@VEL.G! M(YD4T2.=CEH74"+%>G'!@'21#),N"S%(:[*63'1^574$9 ZW6?: R=[[Y/O: MF_NTPL6JB]VR[BB]O&QK\(_%?+F<<"Y21N$@*4."T$$!,J7 N3KU4LE"_W2V M7QY@H_,KMM/;,8="I8>SI7K&%YT\?CU?7+7MO+ASO.$V7S:BRFG"Z[!A;FN; MFV+I0%<(B#H"#Y@83TDJWKJB<'Q_WNE<-@ M>R\F"]?%GAP)=J=P.CXGFDONMY..R3(73!$B]PA*6@[!D[_#18HY**-2./H< MVJ8KH[]"/ M&%F>0I*TB^TX MR:IE6/5J1Z_NT;+G[.RZN4UC-6\>S=;/U.]D;2;C6_>9W9 MOHAU?QH&+G)M))P^BF!YE"+E0# VJOZK3E[(4H.,4;)-1'C$ M2%RTX[\\K=_B=/%//#O/?)*X<4'( C%(K)T[)/BL+0@=E%22L^Q;2W(H7DZZ M$'871+<>;-4$'"_ <;L7=JZG>[^;K1;3V7(:UT*9H/,BE)C 9%0U09O 92L@ MV6"T%"X%=_141P.^3OJF[>#-TQ-H7L!&NN&2WA&$]26S8!3HD")I*ED(G%O0 MSNODI4$1CIZ]WY>9<7.")[QEVL#C!>R3)^\?UC_\E71Y=2!/M$&MEWLV9'%<1-Y)[RGAH32R3U7O,\ O9.U=X$TZH5E"*XZ M0.R?W[_H^A"MD4F:#"IZ ZJ8!#YY#]K60K8H@O+-*PM;$7_2.8!=,/OXZ*)C MJK\#'^QV(UI3H@ETV$*T3-9&#PC!N "6LZ0"*RR%UG>=NW>?/L)(HJ."X,F. MT[MHI ,X[2^X)UI&,2:\E77LNS2,I*E*;1GE0*9DN4RVZ(YJUDZCX_1.L#I& MQ^E==-P!SA]O7BQK%QLAR+F-B2(#'1DXI@44)V7,*"S*UHTQ_DX=IW?"R=8= MIW=16@?HVSO:_>VJI1,JH6I#8PA<1U!2DQR18F]=BE31B2C[Z=_RVTY-XHXP MG&),]^#(NN\%[?O[]<\Y1>+3L^GJYT>* MR"=)*J.S<<"%4F3,ZLPE;B)8FXSWB%K9;EXD[\S=B;XE:;B=^@/12]M>EX;F MU^F/:2>7 :+:E+VNR\3:%YF\_! MF3K15QH=[J&#(7-R5[H?/OWYL?[S"F?IUT]_-K^F?>3SA[UZW8:I/JY3L4C- MM4>PN=21I*Z EU9!"10].&$5#ZU[@KZ4Z]3$,U<^)A B)U 8 P0C(VU+JYQ, MW*KV;V/_>YVZ(V:'NT[=1?T=>#:W;UDD 488, MD@F@A90B."%=/X_C7]SU[B'NRI%U?\IH?_._Y]/5SWEO*L9#;=%F\(AROD$H,"GFO#4V81G!4!5.8^69,]D]V, M?MB=O1.M$GE)F_$PR+WP_7C7=??9.9NCA&"9HFB?/ >,S $SV5JC>,83E(VPOGV88G-Q6- 6U*20"WWH.R.@%F26%W%+:$G-&D MTSD_]Q+!B4:=)Y-B'0R.+SK@W%Y\$RU26+<4][[&!Q8=.&X+9(5&>F&BD?8% M;N$7G[D=;N-T: 1V0O'?+NO[O/B4EXJ\(5)]K/URF#/@G*J/ZHO/OOCH$C\9 M(S!$H[S^3O"_E248$L\OVA&XG0Q\7G!&%.0A9#"N%%#!9/"R&# \%84]A@ZNS31!XT45[:Z+4 MW4QJ;SC97?2 M+'CM! 1C!2CE>'U:DB&PH$VDD#/:U-ANOI27W<(S:3!&$EU])N&TA5"X 5V, M4TG&%*3Y[\ON 5YV[X+9X5YV[Z+^'KRT\["LU2-#,(VZK\+JK:Z MZ !=M[HA;Q[*YJ@2%U:"0>] D<,/0=+>2R%IBJ.]U9DUAM,#9(R,G\::?JH) M]1YB[P Y#0I05 A*)*^!XC3BV!E&6['VK[.RMMNN?9 ':;S[W_?)AQZNQ]7] MV+TI]F;W8@;4^2)^K3]Y.U^LOSL1SNOHM0*+M?!*^ )!%0W1E\JXD++<"1!Y)$4D::%.G@1IA9#+AW&8(6@> K#/?,1==\VM1+R>BZX$PNUD#6W%(< MXR2=?;ZZF$:*S(2(L7DAT7\SNCMB=KB,[B[J[\'U>311E%.P6@8/+AM-\;TC M'\YE"5R@YR1AZTKK-,B+S^CN!(ZM,[J[:*H'R#V?6XHA4'@N$#R+ I2M722K MG!(F+%XS%DOS/@$GF]'=2?V[9W1WT44'Z'HHM:C(PP[D>4/2,8#2(8-+N:9^ MM(J2.VU]Z_OI4\SH[J3I+3*ZNXB] ^0TB#D-VH2:' ^+GB3H*/KTDF2IG;"=<'F^@X"X@Z66[[*.(IR1Q9PB<$$F22$H]*D-]LL' M\9B!2\^X,9[81U_!LG7PB^> -U!%L7NI.NC4(3@0A,W(-QE2!Y"P@1$NA MD4X3"+C2XIKY:YOOFYNLV)49=8I(* C&+XDBVXJ RP4@=4QJ"Y M:#V\] ER#C78K\\7U49SU71V/IU]>?\]+]8ZO;[6 MLM9&SS3M=ZWJ\)98(!2*EJQV-F3IDTVMO9G]J1TW6FZ%I[NV\TC:Z\"QV'#Z M-I.B\.P>JQ/#@C?11 HNK $ET0!FK4$$Q62.,I;2NEW.,R2-B[AC(>-A0#91 M4S^H^T1ZJ[.T?J._\ !3RNF4&)>0G:PU5(&1P,A1ETDIZ[2-PK8NJMN*L'$3 M'.,BL*'*^L'AV_DB3[_,[K,3,8CB X(W@J26C #G@R2>)#-$\TVGZF]/[GC M6LJAO,-CZ:\CJ&X=$^@)&2W ]K. 2E E@1F-1%8PKSKBU)$'0FA-7*&G/NO=,EV@;RC%L(??] MX3-?X=GQ+TKN\OSKM!#1.56IO_HV/Y^MEO7^Z7R54_B)W[^?_:1=_.>GNZY) MO5!:S3\L\@K_NOAFZZN6P0D=]++FN&(^PG4/R\HI C]XY@HYGV1Q,+H MC&$*BJF-6H++@(5.-.$4JFS0<-^ZBK(!V?U> .V"L'O5[4?69P=.P\,L/^1Y M/2R-JU=Y4F@3K8!L@J\-Z1.@8N0P&10:0^2Y^'=B0I?(;SO(F3")A MW*Q^I*TN70JA$'0U<1UC!H=90M+.&.$I%G>F&="W(&CSNJ].3 >UZ',>K]#_GR]7Z)?K$.ET[MP4HVDA0)J\'?0NP3";: MH^B]'L/XWJ5S*_B:OSM\#])NMP[$0W*>./)]LI02&*O!K0L4W";!@45K@Z^/ M157K"^?MJ>OW&O X&;>=M',B-X/3+[-IF4:$(-W$6,66D [N(J.N-MP#O0JVV<4P[F3'G M$WIX=4_"?^35%:N8.9;LR:NF[4UQHJE<2@\9M15)!0RF]2/7I^CI]^YL%TP\ M5E-SL ;&SK7>8V1CN&=??ILOEZ]FZ2J">XV+Q<]R,4]N.4&9M'""C'JNG4Z* MM4"!'0?A0H@2(\MZNVSJG@3T4?1ZN/KG1]9%!X[=/3;72=R+[VUR7[=><\_2 M9=KWX>?>M87J1*H8:=<:#VWU&O#11\UL,UAW MH_+3@'W-D2U^Y+K57\6X.,>SY?K_B=9K%VI"'KLLF!5X8RAPC'7(AU.Q#OF( MF#6Z$H =WO5=NPY9-JO-]ERPFMOT(!(*8%"AA X29DK$FQ4 MT:ML#W46[JPY;GK^Z/[!(1+OT3:^FWU8S.L%[^6U >V;7_./?#;_7I-9$Y=- MD*9>ZOK JN_.P)FD@'N1;:18DOO!@YQG:!PWR7X\6]=253U"<9U'G12AN,>B M0,3Z $,Q#YA% K+85G(7.;K6"82'*1DW^7T\6.TN]A[!\X\%16X3I5$5ERT4 MKG/U5 N@BAR\B"%;XZTP0ST=O4W)5N"QIP^>W<7>+/'<$#RU0=F%%):0*S#256."9"5#$PRY(E;YYHWMWZ(CJUPY$\?1[N*O"_C="/.N"FA MQ+55.6MPWM%1[77MV.LT!1^<>2DBRTP,AZ&'B>KWM4.CRX<&NN@HCW#KHO#B MNQ\IDIB=UY+V32)E$HU1AM%V*:+VLDU6@9>J0-'>T:$NK.!W6@<^GTS89N%N M;AQ:Z/R1M$)S!8Q?5?TP=Q^G7[ZNWI<_E_G"(D\T&=Q<>S4Y8PLQE02X3$%K M*HYQ&STJL_-]UA/K=9/G/PZ8#A)WKQCZL)A_SXO5SP]G.%O5_?&_Y]-URH.^ M7D>O;Z>SZ2K_-OV1TX9MI[QR(AC@-:NK?(@4D6BL3H4-J)'%NYVM=D+9[A1U MDY _#@X'5EEO#OX-SB_2*=ZQX#R3('BN/3Y0 -H8"&!2"YV\CW' +-9=/*"5>*A_I(5;)$6\2D L$G"4SP8"E: XH] UE)ZH&UD0?N 2$>Q M,45MY9,_M4J_5;"[J/F6A]U,J!WHSLO5-+ZNO>T6/S<3 MIC6RP KC((6J72N"!^1. <]!2AV8R[GUP?L@(;W!9A\=W_5[#Q9X!ZBYU>/G M_SY?3)=INFZ @X6 M=P>0N2^8/_!;7I_MAL<28XTDE"X$?I$A*)T!4V &DRC^"+[/)37C&)]C^\Y[ MR;Y;%&VVF,K62J\I+(VL3H)6Q(L5'"CL+L5%Y9QO;8">HJ+:I6?B4%S^F,;_[^&EC89$QKIPQ53JTY;PEB466(4NM2V+H>6Z= M57Z&I!XAM8_N[X&JG2+&KD]ZQ(C_=C7 6&+4TD@*'Z+CU1$@ME)V]2&NI^/< M!!1WWN/MED"\6FD<1VB8DZR]:#NP/[?>:]]^HZURS%E'3\Y=+7AQ!'LTAF14 M>Z_JF+G1K8^RQZGI+YVXI\KG@\A_;(OS*!LDL^FB;KD_9^?+G"YF(A!K19)! M99"\,&2HJUFM$Z^T3HR'4,AH\ZWLSV[K]N=7'P:BH47?\73X=5G*A5#QJL[S MT_FW;[CX.2\W?KKYT1]Y=U]E>#W\J4CM,WH,0 MI@Y92 *\B?0OKS-C+L?H6U]#/4W1X7[ZCWS1E>YBB?H> CER79@!400#A8&< M"&D%."4]=R8G3.WOVNZ1,:X_WA ']SWRPT3>@7=UF31;#\J-/S\O<+;$=<[U M'Q2O5(/]2R9K7<^%238Q<$D1,3PJT#8B)X%,E8!;RZ TJB!"]+ P>IR1B(8+;R1P50MSDG&T/[R%[ (S0B;M4VF,J,/ -%BE M]H!@:B/^CKN6TCE_P=>'O%CWTKKNU$F>[^OU.+WU.O/R"RYK+\_TZ_2LCMB[ M]S"G0=;O#2P:#4]Z'H "C$+2]2P9TU;1;'YQ!E+SY-.$' M"1EY %4+_=^S?@<+O(<3]"83$VVX$;PD2(4LMG+" HRX"9H3W8[AXBM\ZRW M"!@7)0T4^A1$=I+NWM#XD1=AW@@<_\KUY6E.K^A#\4O^X[Q>/[TOZRVT?'^^ M6J[(GM.^NI(5YR5R+3,D6S-Z4@?R(WP&YT,-BA,KHK77M2N-(X\*&\(0#:JF MDP+BVL>8.+06?63 )"=92J[JJ(8(1AOR=CEGCK6^J-Z)P'&MW+!HV1.:NRNN M"UR2<5_DFA;$,_)UO\UG%XR]6JT6TT">;SC+G^?737@_X,_U<^G% F=?\L5< M$?29HJ\Y$'DCRN-F^ M_N#<2+D=8/D1V6YR$/=$//'2A91(H&GMAK%,SGZLX\I2(.\L*Y3-)YWL2.*X MR<0>G(TY>CEK=<<>>ALRR!I2&EW8. >Y&SB@W*F2J9@;6#.R.U Y0LXVG0V M)"9%;GV!^R A(Y;*#:7RNY/<#I9_AR#:R&BB7/3&9@-"1D>'?2''5=3F*US[ MPDLJ"5LWI7R$E!'+Y48"TCXZZ+A([MYUSZ?X-:?SLSPOK\C93)7;Z8]\TR=] M\U<\.T\Y57V\QK-X?K:Y23K&%=N Y UV]W8LD0Y]*:>*95DC@H@UQDBY/N5+ M$2C.\#P;%V)LG44>ZE+NIB(^Y7B^6+<*NE3#VZJ&ZSO2]^4>&1>%LD)ZE:*Q MX*).-8&0R'_.HDZP#SR%$BQO_2:Y">&=7OKM@J^[9OKX"FV8Z&QOUC_FU?0B MGU!S!NL40IU:VZ)CU+8?W>W&V?G 45G((0 X?HLS-"EFQB:PDU('M<8SD4 A_H MG7=4_78073W"\H:KQ>^X(MW,OMSZ^06G[\OZAQ,3E;;UN%!(AX1")\#+2 >6 MQ\B#-(+.DN, >GNBQ[TB&AG. ^GVI,$\"13%UJI24.MW]EI*0!XR\% T7V=G"R$0'%5SDF%4# HUKK&]0@>\64C_JIR650 )R!C1J0SY3*3QLUZ2U"3FGX^CN JR[ M\Q..K+:.3>RU*=F<'?B%OKYL)KAIKKZ_/EBI9?7.T487C@P23P.?+:C3\"HHV@+#DG MP2ME?>N2RRU).[A?Y$9)[\NCXT\N^KA$&S"[F$'8.C<@20Y!"@U*Q,B2INT: M6I>.;$O;N!9W" S=:R@YA)8Z"+=(8-4P+-;*^CA=_ON7G[_D6?SZ#1?_7C4IVM:5 ,_1-+8;V1(!S\+K '5T *]/>):7 MFV/@C[S:M+&+#G7T)I-<9&TSQ .X_[^]*^N-'#?"[_DO2G0?+P$\AV<'F;4- MNW> Y&5!D51;&77+*ZF]XW\?4F[WJ8.22BYZ8RS@!WNG6/R^8K%85:0LRS?, MV&$L"FQF!=#YH$9%=#.D*5R?;HN3@<=^S:LQYMW.PPF]R+'MT+!B^0ZB?(LE M=+E\4I@[7$Q&7FQ7.M9V#(*=QI[!.$!QU<"[-+CBA?BGM1=FC'I!%#E&X',N M3-UAP@%;H7R6(!&'ZHA[X%\#Z% 'UYBP(J-19.AH5W(BVW7'HR ($\;B7W\XX MF=36YP:'\H=#?('4;0(7:[-K@EU5?9_8"H MT-:HMLO/XLQ+7)L;+/9MPPU]8A!FVH9#71[Y#N=F 'UGN4L?7#\%Q;F2*8T@ M0&=CJLL:6Z\;)BSTK8 8GL5"V0CC&1$QQ:G#8V'@N91['O133"IZZ6A<8ZQ MU;S&4J*!F;4Z]F^[IZU-ZG :V4Q )K-R0<@-0OS ,$4L&ME^[%(&';?W:X5[ MI?=5-D9@:C0PMK/@<5_#M7XWW<3WN!.+DNMO$9_$ M_W&=)"GE]=]D>Y>\-I\R(>2W=5KQLOX>WZ0.BU=5$*P! P_65^[/B"/7\DUB M&9'+Q#KP(G&:]>U01**)'3F.Q5P7^DT6W?HS.+&=(.&F(7[&ADL#RPA=B8/C M)Q:)J$-#Z%LA?ZW^C"$V-+H_8PA+.D8!IV5@[MG,(X&,S%T9*GF!$7%Q&(R9 MF\0L#F+;@L[ _$7Z,P99PM#^C"&T:&EF)W5 BY$@-,W$"$S/E=WXIA'2V#$< M)XC%08V%)KAS>^/]&8,L8&A_QA Z-#"OUI6XS0-PFY$X)M0((_G:#G5L(Z(Q M,X)(?AS3EI\AA,[W]:BDFW%-X5_UJ#R"# ULJZLZF%ANQ.W0,Z@;"9@<%AN$ MAHEAAF80F3:UK/@5FA??6'4>>%\<18:.=G50'B0V\3S7%Z&IDS#YN4+'".W M,V+NVT'L4!&_0K=BO\GJ_"#*!U3GA^"O@2GU5X29;7.+.%2$"&XH_+EG&\(# MBQ^.:?DL">S(A_XD^QNNS@^B?W!U?@@76AG767G0$]/@;FP:@2LV<9=9D?S^ MI3A:6Z'%;,OFXK_WZCS<[@=$A;9&M5U^L>78KF_[(B(4*\^U8FH0/_#%&HQ= MVQ1KT(WG:R5Z0]7Y09P/JC]FZJ!PS\> 3A^L+-ZLU?ZS!%'HF428L4E\7UAU[!@QLV+#"CSN M<&91'SSSV*<37"&\;:0/3T=_J7<.RXZIF=AROPCD72_N&E$2>49DFTGD\,0W MP3^ .4I1[!(YH#VUU\;G(DZ#/;EE:O5!S'1$P!H[ON'85!R_7#,VXCI@YB'Q MN.O$M@7]?E.'.KJ4QV9O0ULNV1+ E]/XAB8OBA3!R*4[^(CT7409F3 M>&[H!,2#KF)V*J2E2QM.NYHYC> ^^KY4>2R.(A@;2TDS%\YC.!JZ_GV1^CPMCV:&"*$[I)A8)P>_^YV9)HMC MEQ@.DW$QB@GI8>;J1=*$974TG"SXC4LDM._[[, M'__!*7L6?_$G*=@B7:7KY?Y!S?X4QY&U'0I]-C3*]O;5/,+ ?,9HY8$2%/L/ MQAZ]1WKPU=@/3^LH.SC63*;MKLCJI<\$^)@^AXI3RPB\2/)B1=9T M^SW2;80$7!9H&06W%C"CQ9R5!+IA'NU[LLDQ^2V7!3$J/_]9Y?2'O&93RF^Q M;;78_[+),%K"[Z$R5\MF, 5I'-O8[[9'2L_B'9K'4#$*_RT;A1+$B)[A MY2,QM58WFX+>B[G6GY91]P1],E1(#MXRR4.01.3Z,M\4_^%%?KWF_WJV0OFA MB@%$=PI083E\\RRK8*B5,Z\WF]N[WU[#J9^,I6(1T5NVB$&0(R[\27'>I(#. M,M\ROTK@(?)Z>N!X-KPF8SS^78W Y / ?*,K6=9\M<37LJS9Z<,Q34[9[\]( MK.I\T#YS/C9WU2X10,5?UP^I%+K@/ZL/XH\_0-0\EXJ2K.WEXL4@E1!!S-X? MZ<>K^YP!\W4B$Z7(,XZM9C0TX>I&#%L5JS6[S,@2A*ECB2C7;T;QU(B$)BS) M%?]Q7;("CJ83D2A)X-'>[QP+38CZ)?]SKQ^L!VP1C9*V'45<-S;(!.[VU'3% MV65>R-#R.\DF+[R;LSS/@"PEU*6[?7J M;RE06$1- M$8:L$\5P- @T:W?3:J>]&,2?P?R\8]+"NMHDY0P,EZ[5Z\YEF= M7IB9,Z^);^Y']=?KAX-&<%C3;Q\'MS'X%>M=O5!K8 [/F?(',3Q-MQ=IE_=5 M>7=Q>S>+6?2/A_M2S"N:AS+TV %,T^XA=G0Y0_C3P(M@E*KX]// "2XZ4/?; MFA79T_*.TTV15BDO+U;5=-X:I>+4NH>SU@6)#I1]_EG0FR*E .MK+PJG7#R< MG+/)Z\#(%[$#5)](Q2])6GPGV0: F@:92AQI4%!KAP.9K..5_?3KCZHVI8_W MZ^4-G>;V>D0K48=;8U,#1]?+/Y^+.O$]T\6?<^D@EWYZE)YXX4>2>LMI_LB+ MI^OD;*PS8QAE]TH#3%BR6ZDOPTS/,C<*1$N0#>'G<+%VP8+L9&6CE?#]\NPC M]X#)V>8F>6A\=>*>*X'P?UT'F"4Z427EO0+P7@$8Q,U5OK[B.00IQY+P*F9= M6.<]$]=H7^%"Y"I=/S_F)GX)ML&<"49S:F,C Q68L%W>%+(31?\Y>90A1$6T2BM4:.9;$;&KUX^[3A MB_SS3UGKYV*>ZR0O:!U:3W6V0\9!*W8#,:P"HH:T?T_SK(;Y.ODE7_&/\M6T MXND;^7,.[CL'PRN<0UJ "IX:FH&8\1\;DJ5)2K?:+\C/#WS-$_DJT0RFT#L@ M7JD>TAQ4<=7+)(0;R\AZJ_#7U8-\@5U,($ZSM'J"B=W&C8C7&P!D%,.0U><$ M!AGB=8C%:R .(3I&>LU* A\CCX5JT2B5KFN?HPTJ@KDO!3GPEO^QR8M=GX% MQBD/&$:)9*U27\,QU+4+Z.9QK@Z@8\D@W3\=R@)T_MR0I^_EP>LXT(T_*O(G MK&L!SO1>GYT0M(+K !8.5^3I[+$+0C\YW53I(_\HW,0R+YXFMXXT2\2CZ13O M7''RV(GD+#M5+U5XF5JIB:1=,%[W52<5^3!MMX(=ZXR=^QGPCB1!ZS):^)0#EJ36M>*:)@H M=E"[U18FZ78N#6_;GG:.UZU^\3&_XQF7CR%O;6ARZ:)9(MY&,HZO3ERPSRE" M%;8+ZJ^3)*5"[N4:9JWU2\=S@>.X5,8+VV=R7GPI\LW#U[+< #+:)1>M.W>L M'^W'"-NCWLM'8-A.42@6N^2B]>6.]:[]&*&OQ7R15R2#J .?RD)KMQV]YAJQ MP&?H@E;B))X]W9"4 1'5)!*ML78\7QW(8!^4Y4E1:"BU@G*-;3+1^F5'$M># M#7;8^9(9OGA<@OG&5J%XK:YCH\P>>#1BK];LP$- DM@D&Z]/%8#+#K!T<*4[ M5<$=:JMDO [3*7ZU#RCLSHH_-FGU)-_(>H92'&]6]5N@G])$*,/%;*'8'3@4 M7L/I2+K'08E];#QQ,]_+>A.I7Q&]SS.!\FT%=9(<-A1>K^KHW-T8*+7C_XI7 M7].Z'3;M&#Y+,L_%=,= 2HQKE3L: 2,R\PWN1\Y\F_R" M(5UU#"6^=]JDF\R4CQ+2TKP%)W MNU0E.G5*9_4"A$W@N6>9F@EI$:G4K:!3,JL;&O3,_XOSAR>P3[82DSJELA3! MTN ;([O _5M>0G]AZ5BV$HFZ)+ ZX4&/=DXB[ZG+KU&@$ETZ):"Z8,&^ZBP# M*CDC(,*:Y"GQI5/"J ,4'5+\(,]C'@I2(DBG+$\3#.A!2#ZY5?)%AA(?.N5@ M3B:O1YOW9#J&]JO:.J5)-&Q3S==?1."R5>P3+VF1UF48H#[5?O%*).J4 %&' M#'U?8JG4BV2N:3_N9P=5?NZ3KL2L3KD09VX76=;@2V!N@+8+UH"KCLN@O8"\ M/R: M8;>'Q9X?UA@V-FZ*K(%+U;E=;(HF+ OF B_0RS:&AH6(_0#@QXI2*T@ M'B,]EH1VDW=H#-4D>MIDHEVW'<93#R3XB<4Y..L0BW:_=AAM_Z]CB&L$YNW466\R;.4B@G<%#F=L'8H&NI(UR]=DXID)V_'"7Q%O-!K+$UZ7N755E68-++Z M*)IDE2?RW('?_!Y]^P?Y(R8E_^??_@=02P$"% ,4 " #=F%18TZ<3?[P' M !&)0 ' @ $ 83(P,C-?,3!K97AH:6)I=&5X,S$Q M8V5O+FAT;5!+ 0(4 Q0 ( -V85%A:$GUITP< &\E < M " ?8' !A,C R,U\Q,&ME>&AI8FET97@S,3)C9F\N:'1M4$L! A0#% M @ W9A46# 3MC_Y! ^A< !\ ( ! Q &$R,#(S7S$P M:V5X:&EB:71E>#,R,6-E;V-F;RYH=&U02P$"% ,4 " #=F%18#F7*!C4) M !I3 '@ @ $Y%0 83(P,C-?>&5X,3 Q.&YO;BUE;7!L M;WEE960N:'1M4$L! A0#% @ W9A46"KWHEM(! NS< !\ M ( !JAX &$R,#(S7WAE>#(Q,2US=6)S:61I87)Y;&ES="YH=&U02P$" M% ,4 " #=F%18]?RM[LL" !I" '@ @ $O(P 83(P M,C-?>&5X,C,Q+6-O;G-E;G1O9F%U9&DN:'1M4$L! A0#% @ W9A46 ", M0W\_$0 3V8 !X ( !-B8 &$R,#(S7WAE>&5X.3=C;VUP M96YS871I;VYR+FAT;5!+ 0(4 Q0 ( -V85%A23-XN3N,! -*K& 1 M " ;$W !S<'-C+3(P,C,Q,C,Q+FAT;5!+ 0(4 Q0 ( -V8 M5%B0-\J1BA8 %T$ 0 1 " 2X; @!S<'-C+3(P,C,Q,C,Q M+GAS9%!+ 0(4 Q0 ( -V85%CE![T!42@ %6> 0 5 " M >,# '-P!0!S<'-C+3(P,C,Q,C,Q7W!R92YX;6Q02P4& 2 !$ $0"D! ZLP% end XML 118 spsc-20231231_htm.xml IDEA: XBRL DOCUMENT 0001092699 2023-01-01 2023-12-31 0001092699 2023-06-30 0001092699 2024-02-13 0001092699 2023-12-31 0001092699 2022-12-31 0001092699 2022-01-01 2022-12-31 0001092699 2021-01-01 2021-12-31 0001092699 us-gaap:CommonStockMember 2020-12-31 0001092699 us-gaap:TreasuryStockCommonMember 2020-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2020-12-31 0001092699 us-gaap:RetainedEarningsMember 2020-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2020-12-31 0001092699 2020-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2021-01-01 2021-12-31 0001092699 us-gaap:CommonStockMember 2021-01-01 2021-12-31 0001092699 us-gaap:TreasuryStockCommonMember 2021-01-01 2021-12-31 0001092699 us-gaap:RetainedEarningsMember 2021-01-01 2021-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2021-01-01 2021-12-31 0001092699 us-gaap:CommonStockMember 2021-12-31 0001092699 us-gaap:TreasuryStockCommonMember 2021-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2021-12-31 0001092699 us-gaap:RetainedEarningsMember 2021-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2021-12-31 0001092699 2021-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2022-01-01 2022-12-31 0001092699 us-gaap:CommonStockMember 2022-01-01 2022-12-31 0001092699 us-gaap:TreasuryStockCommonMember 2022-01-01 2022-12-31 0001092699 us-gaap:RetainedEarningsMember 2022-01-01 2022-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-01-01 2022-12-31 0001092699 us-gaap:CommonStockMember 2022-12-31 0001092699 us-gaap:TreasuryStockCommonMember 2022-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2022-12-31 0001092699 us-gaap:RetainedEarningsMember 2022-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2023-01-01 2023-12-31 0001092699 us-gaap:CommonStockMember 2023-01-01 2023-12-31 0001092699 us-gaap:RetainedEarningsMember 2023-01-01 2023-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-01-01 2023-12-31 0001092699 us-gaap:CommonStockMember 2023-12-31 0001092699 us-gaap:TreasuryStockCommonMember 2023-12-31 0001092699 us-gaap:AdditionalPaidInCapitalMember 2023-12-31 0001092699 us-gaap:RetainedEarningsMember 2023-12-31 0001092699 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-12-31 0001092699 spsc:InternallyDevelopedSoftwareMember 2023-12-31 0001092699 spsc:ComputerEquipmentAndSoftwareMember 2023-12-31 0001092699 srt:MinimumMember spsc:OfficeEquipmentAndFurnitureMember 2023-12-31 0001092699 srt:MaximumMember spsc:OfficeEquipmentAndFurnitureMember 2023-12-31 0001092699 srt:MinimumMember us-gaap:CustomerRelationshipsMember 2023-12-31 0001092699 srt:MaximumMember us-gaap:CustomerRelationshipsMember 2023-12-31 0001092699 srt:MinimumMember us-gaap:TechnologyBasedIntangibleAssetsMember 2023-12-31 0001092699 srt:MaximumMember us-gaap:TechnologyBasedIntangibleAssetsMember 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember 2023-09-13 2023-09-13 0001092699 spsc:TIEKinetixHoldingBVMember 2023-09-30 2023-09-30 0001092699 spsc:TIEKinetixHoldingBVMember 2023-12-31 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember 2023-09-30 0001092699 spsc:TIEKinetixHoldingBVMember 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember 2023-10-01 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:CustomerRelationshipsMember 2023-09-30 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:CustomerRelationshipsMember 2023-10-01 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:CustomerRelationshipsMember 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:TechnologyBasedIntangibleAssetsMember 2023-09-30 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:TechnologyBasedIntangibleAssetsMember 2023-10-01 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:TechnologyBasedIntangibleAssetsMember 2023-12-31 0001092699 spsc:TIEKinetixHoldingBVMember us-gaap:DevelopedTechnologyRightsMember 2023-12-31 0001092699 us-gaap:SeriesOfIndividuallyImmaterialBusinessAcquisitionsMember 2023-01-01 2023-12-31 0001092699 us-gaap:SeriesOfIndividuallyImmaterialBusinessAcquisitionsMember 2023-12-31 0001092699 spsc:InterTradeSystemsIncMember 2022-10-04 2022-10-04 0001092699 spsc:InterTradeSystemsIncMember 2023-01-01 2023-12-31 0001092699 spsc:GCommerceIncMember 2022-07-19 2022-07-19 0001092699 spsc:GCommerceIncMember 2023-01-01 2023-12-31 0001092699 spsc:FulfillmentMember spsc:RecurringRevenuesMember 2023-01-01 2023-12-31 0001092699 spsc:FulfillmentMember spsc:RecurringRevenuesMember 2022-01-01 2022-12-31 0001092699 spsc:FulfillmentMember spsc:RecurringRevenuesMember 2021-01-01 2021-12-31 0001092699 spsc:AnalyticsMember spsc:RecurringRevenuesMember 2023-01-01 2023-12-31 0001092699 spsc:AnalyticsMember spsc:RecurringRevenuesMember 2022-01-01 2022-12-31 0001092699 spsc:AnalyticsMember spsc:RecurringRevenuesMember 2021-01-01 2021-12-31 0001092699 spsc:OtherMember spsc:RecurringRevenuesMember 2023-01-01 2023-12-31 0001092699 spsc:OtherMember spsc:RecurringRevenuesMember 2022-01-01 2022-12-31 0001092699 spsc:OtherMember spsc:RecurringRevenuesMember 2021-01-01 2021-12-31 0001092699 spsc:RecurringRevenuesMember 2023-01-01 2023-12-31 0001092699 spsc:RecurringRevenuesMember 2022-01-01 2022-12-31 0001092699 spsc:RecurringRevenuesMember 2021-01-01 2021-12-31 0001092699 spsc:OneTimeRevenuesMember 2023-01-01 2023-12-31 0001092699 spsc:OneTimeRevenuesMember 2022-01-01 2022-12-31 0001092699 spsc:OneTimeRevenuesMember 2021-01-01 2021-12-31 0001092699 srt:MinimumMember 2023-01-01 2023-12-31 0001092699 srt:MaximumMember 2023-01-01 2023-12-31 0001092699 spsc:SetUpFeesMember 2022-12-31 0001092699 spsc:SetUpFeesMember 2021-12-31 0001092699 spsc:SetUpFeesMember 2023-01-01 2023-12-31 0001092699 spsc:SetUpFeesMember 2022-01-01 2022-12-31 0001092699 spsc:SetUpFeesMember 2023-12-31 0001092699 us-gaap:CashEquivalentsMember us-gaap:MoneyMarketFundsMember 2023-12-31 0001092699 us-gaap:CashEquivalentsMember us-gaap:MoneyMarketFundsMember 2022-12-31 0001092699 us-gaap:CertificatesOfDepositMember 2023-12-31 0001092699 us-gaap:CertificatesOfDepositMember 2022-12-31 0001092699 spsc:MarketableSecuritiesMember us-gaap:CommercialPaperMember 2023-12-31 0001092699 spsc:MarketableSecuritiesMember us-gaap:CommercialPaperMember 2022-12-31 0001092699 spsc:InternallyDevelopedSoftwareMember 2022-12-31 0001092699 us-gaap:ComputerEquipmentMember 2023-12-31 0001092699 us-gaap:ComputerEquipmentMember 2022-12-31 0001092699 us-gaap:LeaseholdImprovementsMember 2023-12-31 0001092699 us-gaap:LeaseholdImprovementsMember 2022-12-31 0001092699 spsc:OfficeEquipmentAndFurnitureMember 2023-12-31 0001092699 spsc:OfficeEquipmentAndFurnitureMember 2022-12-31 0001092699 us-gaap:CustomerRelationshipsMember 2023-12-31 0001092699 us-gaap:TechnologyBasedIntangibleAssetsMember 2023-12-31 0001092699 us-gaap:CustomerRelationshipsMember 2022-12-31 0001092699 us-gaap:TechnologyBasedIntangibleAssetsMember 2022-12-31 0001092699 spsc:TwoThousandAndNineteenStockRepurchaseProgramMember us-gaap:CommonStockMember 2023-12-31 0001092699 spsc:TwoThousandAndNineteenStockRepurchaseProgramMember us-gaap:CommonStockMember 2023-01-01 2023-12-31 0001092699 spsc:A2021StockRepurchaseProgramMember us-gaap:CommonStockMember 2023-12-31 0001092699 spsc:A2021StockRepurchaseProgramMember us-gaap:CommonStockMember 2023-01-01 2023-12-31 0001092699 spsc:A2022StockRepurchaseProgramMember us-gaap:CommonStockMember 2023-12-31 0001092699 us-gaap:CostOfSalesMember 2023-01-01 2023-12-31 0001092699 us-gaap:CostOfSalesMember 2022-01-01 2022-12-31 0001092699 us-gaap:CostOfSalesMember 2021-01-01 2021-12-31 0001092699 us-gaap:SellingAndMarketingExpenseMember 2023-01-01 2023-12-31 0001092699 us-gaap:SellingAndMarketingExpenseMember 2022-01-01 2022-12-31 0001092699 us-gaap:SellingAndMarketingExpenseMember 2021-01-01 2021-12-31 0001092699 us-gaap:ResearchAndDevelopmentExpenseMember 2023-01-01 2023-12-31 0001092699 us-gaap:ResearchAndDevelopmentExpenseMember 2022-01-01 2022-12-31 0001092699 us-gaap:ResearchAndDevelopmentExpenseMember 2021-01-01 2021-12-31 0001092699 us-gaap:GeneralAndAdministrativeExpenseMember 2023-01-01 2023-12-31 0001092699 us-gaap:GeneralAndAdministrativeExpenseMember 2022-01-01 2022-12-31 0001092699 us-gaap:GeneralAndAdministrativeExpenseMember 2021-01-01 2021-12-31 0001092699 us-gaap:EmployeeStockOptionMember 2023-01-01 2023-12-31 0001092699 us-gaap:EmployeeStockOptionMember 2022-01-01 2022-12-31 0001092699 us-gaap:EmployeeStockOptionMember 2021-01-01 2021-12-31 0001092699 us-gaap:PerformanceSharesMember 2023-01-01 2023-12-31 0001092699 us-gaap:PerformanceSharesMember 2022-01-01 2022-12-31 0001092699 us-gaap:PerformanceSharesMember 2021-01-01 2021-12-31 0001092699 spsc:RestrictedStockUnitsAndDeferredStockUnitsMember 2023-01-01 2023-12-31 0001092699 spsc:RestrictedStockUnitsAndDeferredStockUnitsMember 2022-01-01 2022-12-31 0001092699 spsc:RestrictedStockUnitsAndDeferredStockUnitsMember 2021-01-01 2021-12-31 0001092699 us-gaap:RestrictedStockMember 2023-01-01 2023-12-31 0001092699 us-gaap:RestrictedStockMember 2022-01-01 2022-12-31 0001092699 us-gaap:RestrictedStockMember 2021-01-01 2021-12-31 0001092699 spsc:EmployeeStockPurchasePlanMember 2023-01-01 2023-12-31 0001092699 spsc:EmployeeStockPurchasePlanMember 2022-01-01 2022-12-31 0001092699 spsc:EmployeeStockPurchasePlanMember 2021-01-01 2021-12-31 0001092699 spsc:FourZeroOneKStockMatchMember 2023-01-01 2023-12-31 0001092699 spsc:FourZeroOneKStockMatchMember 2022-01-01 2022-12-31 0001092699 spsc:FourZeroOneKStockMatchMember 2021-01-01 2021-12-31 0001092699 us-gaap:EmployeeStockOptionMember 2023-12-31 0001092699 us-gaap:RestrictedStockUnitsRSUMember 2023-01-01 2023-12-31 0001092699 spsc:DeferredStockUnitsMember 2023-01-01 2023-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2020-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2021-01-01 2021-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2021-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2022-01-01 2022-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2022-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2023-01-01 2023-12-31 0001092699 spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2023-12-31 0001092699 srt:MaximumMember spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember 2023-12-31 0001092699 us-gaap:EmployeeStockMember 2023-01-01 2023-12-31 0001092699 us-gaap:EmployeeStockMember 2022-01-01 2022-12-31 0001092699 us-gaap:EmployeeStockMember 2021-01-01 2021-12-31 0001092699 us-gaap:EmployeeStockMember 2023-12-31 0001092699 us-gaap:DomesticCountryMember 2023-12-31 0001092699 us-gaap:StateAndLocalJurisdictionMember 2023-12-31 0001092699 us-gaap:ForeignCountryMember 2023-12-31 0001092699 us-gaap:DomesticCountryMember us-gaap:InternalRevenueServiceIRSMember 2023-12-31 0001092699 us-gaap:SalesRevenueNetMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionDomesticMember 2023-01-01 2023-12-31 0001092699 us-gaap:SalesRevenueNetMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionDomesticMember 2022-01-01 2022-12-31 0001092699 us-gaap:SalesRevenueNetMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionDomesticMember 2021-01-01 2021-12-31 0001092699 spsc:IncomeBeforeIncomeTaxMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionDomesticMember 2023-01-01 2023-12-31 0001092699 spsc:IncomeBeforeIncomeTaxMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionDomesticMember 2022-01-01 2022-12-31 0001092699 spsc:IncomeBeforeIncomeTaxMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionDomesticMember 2021-01-01 2021-12-31 0001092699 us-gaap:PropertyPlantAndEquipmentMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionForeignMember 2023-01-01 2023-12-31 0001092699 us-gaap:PropertyPlantAndEquipmentMember us-gaap:GeographicConcentrationRiskMember us-gaap:GeographicDistributionForeignMember 2022-01-01 2022-12-31 0001092699 spsc:ContributionsToFoundationMember 2023-01-01 2023-12-31 0001092699 spsc:ContributionsToFoundationMember 2022-01-01 2022-12-31 0001092699 spsc:ContributionsToFoundationMember 2021-01-01 2021-12-31 0001092699 2023-10-01 2023-12-31 iso4217:USD shares iso4217:USD shares spsc:segment pure spsc:period iso4217:EUR utr:sqft spsc:option 0001092699 2023 FY false 10-K true 2023-12-31 --12-31 false 001-34702 SPS COMMERCE, INC. DE 41-2015127 333 South Seventh Street Suite 1000 Minneapolis MN 55402 612 435-9400 Common Stock, par value $0.001 per share SPSC NASDAQ Yes No Yes Yes Large Accelerated Filer false false true false false 7000000000.0 36973665 <div style="margin-top:4pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%">DOCUMENTS INCORPORATED BY REFERENCE</span></div>Portions of the Company’s definitive Proxy Statement for the Annual Meeting of Stockholders to be held on May 16, 2024 (the “2024 Proxy Statement”), which is expected to be filed within 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K, are incorporated by reference in Part III of this Annual Report on Form 10-K. 185 KPMG, LLP Minneapolis, MN 219081000 162893000 56359000 51412000 50160000 42501000 3320000 3066000 46840000 39435000 62403000 52755000 16758000 16319000 401441000 322814000 36043000 35458000 7862000 9170000 249176000 197284000 107344000 88352000 20347000 17424000 505000 227000 1126000 2185000 823844000 672914000 7420000 11256000 41588000 30235000 8014000 7451000 69187000 57423000 4460000 4277000 130669000 110642000 6930000 4771000 9569000 13009000 8972000 7419000 229000 0 156369000 135841000 0.001 0.001 5000000 5000000 0 0 0 0 0 0 0.001 0.001 110000000 110000000 38971146 38309144 36820048 36158046 39000 38000 2151098 2151098 128892000 128892000 537061000 476117000 259045000 193221000 222000 -3411000 667475000 537073000 823844000 672914000 536910000 450875000 385276000 182069000 153065000 131678000 354841000 297810000 253598000 122936000 101772000 88044000 53654000 45748000 39038000 84887000 67340000 61305000 16116000 11768000 10126000 277593000 226628000 198513000 77248000 71182000 55085000 8315000 142000 -1544000 85563000 71324000 53541000 19739000 16190000 8944000 65824000 55134000 44597000 3393000 -2240000 -514000 644000 147000 -34000 1932000 441000 -102000 564000 55000 -63000 1692000 165000 -190000 3633000 -1964000 -426000 69457000 53170000 44171000 1.80 1.53 1.24 1.76 1.49 1.21 36646000 36117000 35928000 37475000 36953000 36962000 35487217 37000 1613250 -65247000 393462000 93490000 -1021000 420721000 25686000 25686000 642417 1000 9373000 9374000 55726 4737000 4737000 176103 176103 20430000 20430000 44597000 44597000 -514000 -514000 -102000 -102000 -190000 -190000 36009257 38000 1789353 -85677000 433258000 138087000 -1447000 484259000 31275000 31275000 440427 4908000 4908000 70107 6676000 6676000 361745 361745 43215000 43215000 55134000 55134000 -2240000 -2240000 441000 441000 165000 165000 36158046 38000 2151098 -128892000 476117000 193221000 -3411000 537073000 42975000 42975000 598361 1000 9855000 9856000 63641 8114000 8114000 65824000 65824000 3393000 3393000 1932000 1932000 1692000 1692000 36820048 39000 2151098 -128892000 537061000 259045000 222000 667475000 65824000 55134000 44597000 -10079000 -3732000 3881000 18631000 16421000 14788000 16116000 11768000 10126000 5707000 3359000 4717000 45508000 33399000 27574000 -2415000 -220000 -323000 11949000 6435000 4959000 10724000 10646000 9299000 -1834000 -2632000 6181000 -3947000 144000 2259000 7143000 -3786000 6775000 1302000 -2829000 1017000 6464000 5965000 14483000 -1947000 -1562000 2792000 132298000 100052000 112893000 19761000 19880000 19588000 133994000 160427000 121242000 131331000 158937000 111193000 70218000 91420000 17066000 -92642000 -112790000 -46703000 0 43215000 20430000 9856000 4908000 9374000 8114000 6676000 4737000 2000000 0 2042000 15970000 -31631000 -8361000 562000 -290000 31000 56188000 -44659000 57860000 162893000 207552000 149692000 219081000 162893000 207552000 29207000 16076000 9979000 0 2000000 0 General<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business Description</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Basis of Presentation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements.</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;font-weight:400;line-height:120%"> </span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Foreign Currency Translation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies are included in other income (expense), net in our consolidated statements of comprehensive income.</span></div><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><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business Combinations</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We allocate the fair value of purchase consideration to the tangible assets acquired, liabilities assumed, and intangible assets acquired based on their estimated fair values as of the acquisition date. The excess of the fair value of purchase consideration over the fair values of these identifiable assets and liabilities is recorded as goodwill. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We record the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred, if present. The unsettled earn-out liability, if any, is subsequently remeasured at each reporting date at fair value through earnings.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed. Any such adjustments would be recorded as an offset to goodwill or a working capital purchase price adjustment as applicable. Upon the conclusion of the measurement period or final determination of the fair values, whichever comes first, any subsequent adjustments would be recorded in our consolidated statements of comprehensive income.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Segment Information</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our Chief Executive Officer acts as the Company’s chief operating decision maker and reviews financial information presented on a consolidated basis for purposes of allocating resources and evaluating financial performance. There are no segment managers who are held accountable by the chief operating decision maker, or anyone else, for operations, operating results and planning for levels or components below the consolidated unit level. Accordingly, we determined we have one operating and reportable segment, which is supply chain management products.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Concentration of Credit Risk</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits, accounts receivable, and investments. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. Concentrations of credit risk with respect to accounts receivable are subject to the financial condition of our customers, which are routinely assessed for potential credit losses. We believe that the receivable credit risk exposure is limited. Our investment policy limits the amount of credit exposure with any one financial institution or commercial issuer and sets requirements regarding credit rating and investment maturities to safeguard liquidity and minimize risk. </span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cash and Cash Equivalents</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Investments</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We invest in money market funds, certificates of deposit, and/or marketable securities such as commercial paper, highly liquid debt instruments of the U.S. government, and U.S. corporate debt securities. Investments with remaining maturities of less than one year from the balance sheet date are classified as short-term investments whereas those with remaining maturities of more than one year from the balance sheet date are classified as investments, non-current. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Securities classified as available for sale are carried at fair value and the unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive gain (loss) in the consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the consolidated statements of comprehensive income. Certain securities accrue interest that is included in other income (expense), net. If a determination has been made that the fair value of a marketable security is below its amortized cost basis, the portion of the unrealized loss that corresponds to a credit-related factor is realized through a credit allowance on the marketable security and the equivalent expense is realized in other income (expense), net in the consolidated statements of comprehensive income.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Fair Value Measurements</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Recurring Fair Value Measurements</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that are used to measure fair value are:</span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;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%;padding-left:23.5pt">Level 1 – quoted prices in active markets for identical assets or liabilities.</span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;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%;padding-left:23.5pt">Level 2 – observable inputs other than Level 1 prices, such as (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities. </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;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%;padding-left:23.5pt">Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Nonrecurring Fair Value Measurements</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We measure certain assets and liabilities at fair value on a nonrecurring basis, including long-lived assets, goodwill, and indefinite-lived intangible assets.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accounts Receivable</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable are initially recorded upon the sale and invoicing of products to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for credit losses, which represent estimated losses resulting from customers not making required payments on accounts receivables. When determining the allowance, we pool our outstanding accounts receivable invoices based on the contractual due date of payment. We take several factors into consideration for estimated credit losses by pool, primarily our historical credit losses, with additional adjustments made for current and future macro-economic conditions and retail bankruptcy trends. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowance are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Property and Equipment</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, including assets acquired under lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization expense is calculated using the straight-line method over the estimated useful lives, commencing on the earlier date in which the asset is placed in service or ready for its intended use.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated useful lives of property and equipment were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:36.324%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:61.476%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Estimated Useful Life</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:114%">Internally developed software</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:114%">3 years</span></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:114%">Computer equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3 years</span></div></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:114%">Office equipment and furniture</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5-7 years</span></div></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:114%">Leasehold improvements</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:114%">Shorter of the useful life of the asset or the remaining term of the lease</span></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred.</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals with the resulting gain or loss included in our consolidated statements of comprehensive income.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We capitalize and amortize eligible costs to acquire or generate internally developed software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Additionally, maintenance of internally developed software are expensed as incurred. The assets and related accumulated amortization are adjusted for abandoned internally developed software with the resulting loss included in our consolidated statements of comprehensive income.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Leases</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and non-current operating lease liabilities in our consolidated balance sheets.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Right-of-use (“ROU”) assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We use the implicit interest rate when readily determinable. We estimate the discount rate for a similar collateralized asset by estimating costs of borrowing. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Research and Development</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Research and development costs primarily include development, maintenance, and data conversion activities related to our cloud-based supply chain management products and are expensed as incurred. Research and development costs are net of amounts capitalized as developed software.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Goodwill</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. Goodwill is attributed to a trained workforce and other buyer-specific value resulting from expected synergies, including long-term cost savings, which are not included in the fair values of identifiable assets. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount exceeds the fair value of the reporting unit, we would recognize an impairment loss in the consolidated statements of comprehensive income, to the extent that the carrying amount exceeds fair value. </span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Intangible Assets</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships and developed technology. We recognize the fair value of the identifiable intangible assets acquired separately from goodwill. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:11pt;font-weight:400;line-height:120%"> </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated useful lives for intangible were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:48.900%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:48.900%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Estimated Useful Life</span></td></tr><tr><td colspan="3" style="background-color:#CFF0FC;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></td><td colspan="3" style="background-color:#cff0fc;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">7-10 years</span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5-10 years</span></div></td></tr></table></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Impairment of Long-Lived Assets</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured and recorded as an expense in the consolidated statements of comprehensive income as the amount by which the carrying amount of a long-lived asset exceeds its fair value.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We determine revenue recognition through the following steps:</span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Identification of the contract, or contracts, with a customer </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Identification of the performance obligations in the contract </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Determination of the transaction price </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Allocation of the transaction price to the performance obligations in the contract </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Recognition of revenue when, or as, we satisfy a performance obligation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See Note C for further descriptions of our revenue recognition policy.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Deferred Costs</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred costs are those that are incurred to fulfill or obtain customer contracts and that are considered incremental and recoverable costs. These consist primarily of customer implementation costs and certain commissions paid to sales personnel and referral partners, respectively. These costs are deferred and amortized over the expected period of benefit which we have determined primarily to be two years.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Customer implementation costs are based on actual costs</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">incurred. Related amortization expense is included in cost of revenues in the consolidated statements of comprehensive income.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. Related amortization expense is included in sales and marketing expenses in the consolidated statements of comprehensive income.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation includes grants of incentive and nonqualified stock options, performance share units (“PSUs”), restricted stock awards (“RSAs”), restricted stock units (“RSUs”), deferred stock units (“DSUs”), employee stock purchase plan (“ESPP”) activity, and 401(k) stock match and is used to compensate employees, executive officers, and non-employee directors. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We recognize the cost of all stock-based payments based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award or the award performance period,</span><span style="color:#000000;font-family:'Calibri',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%">except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. For all awards, we recognize forfeitures as they occur.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RSAs result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested, or released according to the terms of the agreement.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our ESPP allows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of our common stock at the beginning or end of each stock purchase period. The plan is a Type B plan, so the number of shares a participants can acquire is variable. Participants purchase more shares as the stock price decreases, up to the total amount originally elected to withhold at the beginning of the offering period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of stock options and ESPP activity is estimated using the Black-Scholes option valuation model. The fair value for RSAs, RSUs, and DSUs is the closing market value of the underlying stock on the date of grant less the purchase price (if any). The fair value of PSUs is estimated using a Monte Carlo simulation. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is derived from historical data on option holder exercises and post-vesting employment termination behavior.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Additional valuation inputs include our expected non-issuance of future common stock dividends and the risk-free interest rate that is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equaling the expected life at the grant date. For PSUs, the Monte Carlo simulation utilizes multiple input variables that determine the probability of satisfying the performance conditions stipulated in the award. </span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the consolidated financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgment, it is more likely than not that some or all of the deferred tax asset will not be realized. Deferred tax positions are net by jurisdiction on the consolidated balance sheet.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">It is our practice to recognize interest and penalties accrued on any unrecognized tax benefits as a component of income tax expense.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Net Income Per Share</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share.</span></div><div style="margin-top:18pt"><span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accounting Pronouncements Recently Adopted</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:22.081%"></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:1.0%"></td><td style="width:26.172%"></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:1.0%"></td><td style="width:22.085%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Standard</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:114%">Date of Issuance</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:114%">Description</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Date of Adoption</span></div></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:114%">Effect on the Financial Statements</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">ASU 2021-08</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers</span></div></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">October 2021</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.<br/></span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">January 2023</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">The adoption of this standard has not had a material impact on the purchase accounting for business combinations.</span></td></tr></table></div><div style="margin-top:18pt"><span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accounting Pronouncements Not Yet Adopted</span></div><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:22.081%"></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:1.0%"></td><td style="width:26.172%"></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:1.0%"></td><td style="width:22.085%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Standard</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:114%">Date of Issuance</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:114%">Description</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:114%">Date of Required Adoption</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:114%">Effect on the Financial Statements</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">ASU 2023-09</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">, Income Taxes (Topic 740) - Improvements to Income Tax Disclosures</span></div></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">December 2023</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">This amendment requires that an entity disclose specific categories in the effective tax rate reconciliation table as well as provide disclosure of disaggregated information related to income tax expense, income before income taxes, and income taxes paid. </span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">January 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">ASU 2023-07</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">, Segment Reporting (Topic 280) - Improvements to Reportable Segment Disclosures</span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">November 2023</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">This amendment requires that an entity disclose significant segment expenses impacting profit and loss that are regularly provided to the chief operating decision maker.</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">January 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.</span></td></tr></table></div> <div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business Description</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Basis of Presentation</span></div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements.</span> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Foreign Currency Translation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies are included in other income (expense), net in our consolidated statements of comprehensive income.</span></div> <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> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business Combinations</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We allocate the fair value of purchase consideration to the tangible assets acquired, liabilities assumed, and intangible assets acquired based on their estimated fair values as of the acquisition date. The excess of the fair value of purchase consideration over the fair values of these identifiable assets and liabilities is recorded as goodwill. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We record the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred, if present. The unsettled earn-out liability, if any, is subsequently remeasured at each reporting date at fair value through earnings.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed. Any such adjustments would be recorded as an offset to goodwill or a working capital purchase price adjustment as applicable. Upon the conclusion of the measurement period or final determination of the fair values, whichever comes first, any subsequent adjustments would be recorded in our consolidated statements of comprehensive income.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Segment Information</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our Chief Executive Officer acts as the Company’s chief operating decision maker and reviews financial information presented on a consolidated basis for purposes of allocating resources and evaluating financial performance. There are no segment managers who are held accountable by the chief operating decision maker, or anyone else, for operations, operating results and planning for levels or components below the consolidated unit level. Accordingly, we determined we have one operating and reportable segment, which is supply chain management products.</span></div> 1 1 <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Concentration of Credit Risk</span></div>Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits, accounts receivable, and investments. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. Concentrations of credit risk with respect to accounts receivable are subject to the financial condition of our customers, which are routinely assessed for potential credit losses. We believe that the receivable credit risk exposure is limited. Our investment policy limits the amount of credit exposure with any one financial institution or commercial issuer and sets requirements regarding credit rating and investment maturities to safeguard liquidity and minimize risk. <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cash and Cash Equivalents</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Investments</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We invest in money market funds, certificates of deposit, and/or marketable securities such as commercial paper, highly liquid debt instruments of the U.S. government, and U.S. corporate debt securities. Investments with remaining maturities of less than one year from the balance sheet date are classified as short-term investments whereas those with remaining maturities of more than one year from the balance sheet date are classified as investments, non-current. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Securities classified as available for sale are carried at fair value and the unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive gain (loss) in the consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the consolidated statements of comprehensive income. Certain securities accrue interest that is included in other income (expense), net. If a determination has been made that the fair value of a marketable security is below its amortized cost basis, the portion of the unrealized loss that corresponds to a credit-related factor is realized through a credit allowance on the marketable security and the equivalent expense is realized in other income (expense), net in the consolidated statements of comprehensive income.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Fair Value Measurements</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Recurring Fair Value Measurements</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that are used to measure fair value are:</span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;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%;padding-left:23.5pt">Level 1 – quoted prices in active markets for identical assets or liabilities.</span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;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%;padding-left:23.5pt">Level 2 – observable inputs other than Level 1 prices, such as (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities. </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;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%;padding-left:23.5pt">Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Nonrecurring Fair Value Measurements</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We measure certain assets and liabilities at fair value on a nonrecurring basis, including long-lived assets, goodwill, and indefinite-lived intangible assets.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accounts Receivable</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable are initially recorded upon the sale and invoicing of products to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for credit losses, which represent estimated losses resulting from customers not making required payments on accounts receivables. When determining the allowance, we pool our outstanding accounts receivable invoices based on the contractual due date of payment. We take several factors into consideration for estimated credit losses by pool, primarily our historical credit losses, with additional adjustments made for current and future macro-economic conditions and retail bankruptcy trends. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowance are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Property and Equipment</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, including assets acquired under lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization expense is calculated using the straight-line method over the estimated useful lives, commencing on the earlier date in which the asset is placed in service or ready for its intended use.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated useful lives of property and equipment were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:36.324%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:61.476%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Estimated Useful Life</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:114%">Internally developed software</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:114%">3 years</span></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:114%">Computer equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3 years</span></div></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:114%">Office equipment and furniture</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5-7 years</span></div></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:114%">Leasehold improvements</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:114%">Shorter of the useful life of the asset or the remaining term of the lease</span></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred.</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals with the resulting gain or loss included in our consolidated statements of comprehensive income.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We capitalize and amortize eligible costs to acquire or generate internally developed software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Additionally, maintenance of internally developed software are expensed as incurred. The assets and related accumulated amortization are adjusted for abandoned internally developed software with the resulting loss included in our consolidated statements of comprehensive income.</span></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated useful lives of property and equipment were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:36.324%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:61.476%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Estimated Useful Life</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:114%">Internally developed software</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:114%">3 years</span></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:114%">Computer equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3 years</span></div></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:114%">Office equipment and furniture</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5-7 years</span></div></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:114%">Leasehold improvements</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:114%">Shorter of the useful life of the asset or the remaining term of the lease</span></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net consisted of the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Internally developed software</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">60,396 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">49,994 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Computer equipment</span></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:114%">34,402 </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="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:114%">30,310 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Leasehold improvements</span></td><td colspan="2" style="background-color:#cceeff;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:114%">15,387 </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 colspan="2" style="background-color:#cceeff;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:114%">16,531 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Office equipment and furniture</span></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:114%">10,966 </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="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:114%">10,981 </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 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Property and equipment, cost</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:114%">121,151 </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:114%">107,816 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Less: accumulated depreciation and amortization</span></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:114%">(85,108)</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="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:114%">(72,358)</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 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total property and equipment, net</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">36,043 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">35,458 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> P3Y P3Y P5Y P7Y <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Leases</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and non-current operating lease liabilities in our consolidated balance sheets.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Right-of-use (“ROU”) assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We use the implicit interest rate when readily determinable. We estimate the discount rate for a similar collateralized asset by estimating costs of borrowing. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Research and Development</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Research and development costs primarily include development, maintenance, and data conversion activities related to our cloud-based supply chain management products and are expensed as incurred. Research and development costs are net of amounts capitalized as developed software.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Goodwill</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. Goodwill is attributed to a trained workforce and other buyer-specific value resulting from expected synergies, including long-term cost savings, which are not included in the fair values of identifiable assets. </span></div>We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount exceeds the fair value of the reporting unit, we would recognize an impairment loss in the consolidated statements of comprehensive income, to the extent that the carrying amount exceeds fair value. <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Intangible Assets</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships and developed technology. We recognize the fair value of the identifiable intangible assets acquired separately from goodwill. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:11pt;font-weight:400;line-height:120%"> </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated useful lives for intangible were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:48.900%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:48.900%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Estimated Useful Life</span></td></tr><tr><td colspan="3" style="background-color:#CFF0FC;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></td><td colspan="3" style="background-color:#cff0fc;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">7-10 years</span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5-10 years</span></div></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated useful lives for intangible were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:48.900%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:48.900%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Estimated Useful Life</span></td></tr><tr><td colspan="3" style="background-color:#CFF0FC;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></td><td colspan="3" style="background-color:#cff0fc;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">7-10 years</span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5-10 years</span></div></td></tr></table></div> P7Y P10Y P5Y P10Y <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Impairment of Long-Lived Assets</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured and recorded as an expense in the consolidated statements of comprehensive income as the amount by which the carrying amount of a long-lived asset exceeds its fair value.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We determine revenue recognition through the following steps:</span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Identification of the contract, or contracts, with a customer </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Identification of the performance obligations in the contract </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Determination of the transaction price </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Allocation of the transaction price to the performance obligations in the contract </span></div><div style="margin-top:6pt;padding-left:54pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;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%;padding-left:22.8pt">Recognition of revenue when, or as, we satisfy a performance obligation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See Note C for further descriptions of our revenue recognition policy.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Deferred Costs</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred costs are those that are incurred to fulfill or obtain customer contracts and that are considered incremental and recoverable costs. These consist primarily of customer implementation costs and certain commissions paid to sales personnel and referral partners, respectively. These costs are deferred and amortized over the expected period of benefit which we have determined primarily to be two years.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Customer implementation costs are based on actual costs</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">incurred. Related amortization expense is included in cost of revenues in the consolidated statements of comprehensive income.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. Related amortization expense is included in sales and marketing expenses in the consolidated statements of comprehensive income.</span></div> P2Y <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation includes grants of incentive and nonqualified stock options, performance share units (“PSUs”), restricted stock awards (“RSAs”), restricted stock units (“RSUs”), deferred stock units (“DSUs”), employee stock purchase plan (“ESPP”) activity, and 401(k) stock match and is used to compensate employees, executive officers, and non-employee directors. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We recognize the cost of all stock-based payments based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award or the award performance period,</span><span style="color:#000000;font-family:'Calibri',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%">except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. For all awards, we recognize forfeitures as they occur.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RSAs result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested, or released according to the terms of the agreement.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our ESPP allows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of our common stock at the beginning or end of each stock purchase period. The plan is a Type B plan, so the number of shares a participants can acquire is variable. Participants purchase more shares as the stock price decreases, up to the total amount originally elected to withhold at the beginning of the offering period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of stock options and ESPP activity is estimated using the Black-Scholes option valuation model. The fair value for RSAs, RSUs, and DSUs is the closing market value of the underlying stock on the date of grant less the purchase price (if any). The fair value of PSUs is estimated using a Monte Carlo simulation. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is derived from historical data on option holder exercises and post-vesting employment termination behavior.</span></div>Additional valuation inputs include our expected non-issuance of future common stock dividends and the risk-free interest rate that is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equaling the expected life at the grant date. For PSUs, the Monte Carlo simulation utilizes multiple input variables that determine the probability of satisfying the performance conditions stipulated in the award. 0.85 2 P6M <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the consolidated financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgment, it is more likely than not that some or all of the deferred tax asset will not be realized. Deferred tax positions are net by jurisdiction on the consolidated balance sheet.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">It is our practice to recognize interest and penalties accrued on any unrecognized tax benefits as a component of income tax expense.</span></div> <div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Net Income Per Share</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share.</span></div> <div style="margin-top:18pt"><span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accounting Pronouncements Recently Adopted</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:22.081%"></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:1.0%"></td><td style="width:26.172%"></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:1.0%"></td><td style="width:22.085%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Standard</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:114%">Date of Issuance</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:114%">Description</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Date of Adoption</span></div></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:114%">Effect on the Financial Statements</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">ASU 2021-08</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers</span></div></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">October 2021</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.<br/></span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">January 2023</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">The adoption of this standard has not had a material impact on the purchase accounting for business combinations.</span></td></tr></table></div><div style="margin-top:18pt"><span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accounting Pronouncements Not Yet Adopted</span></div><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:22.081%"></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:1.0%"></td><td style="width:26.172%"></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:1.0%"></td><td style="width:22.085%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Standard</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:114%">Date of Issuance</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:114%">Description</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:114%">Date of Required Adoption</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:114%">Effect on the Financial Statements</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">ASU 2023-09</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">, Income Taxes (Topic 740) - Improvements to Income Tax Disclosures</span></div></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">December 2023</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">This amendment requires that an entity disclose specific categories in the effective tax rate reconciliation table as well as provide disclosure of disaggregated information related to income tax expense, income before income taxes, and income taxes paid. </span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">January 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">ASU 2023-07</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">, Segment Reporting (Topic 280) - Improvements to Reportable Segment Disclosures</span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">November 2023</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">This amendment requires that an entity disclose significant segment expenses impacting profit and loss that are regularly provided to the chief operating decision maker.</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">January 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">We are currently evaluating the adoption on our financial statements and anticipate the impact will result in additional disclosure.</span></td></tr></table></div> Business Acquisitions<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">TIE Kinetix</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Effective September 13, 2023, we acquired all of the outstanding equity ownership interests of TIE Kinetix Holding B.V. ("TIE Kinetix"), a leading provider of supply chain digitalization including EDI and e-invoicing in Europe and the United States. Pursuant to the definitive agreement, the purchase price was €63.9 million ($68.7 million at the September 13, 2023 exchange rate), net of cash acquired. The purchase accounting for the acquisition has not been finalized as of December 31, 2023; provisional amounts are primarily related to intangible assets and tax components. We expect to finalize the allocation of the purchase price within the one-year measurement period following the acquisition. The goodwill associated with the acquisition is not deductible for income tax purposes.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Purchase Price Allocation</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We accounted for the acquisition as a business combination. We allocated the purchase price to the tangible and identifiable intangible assets acquired and liabilities assumed based on their estimated fair values as of the acquisition date.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date:</span></div><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.424%"><tr><td style="width:1.0%"></td><td style="width:44.312%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.341%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.985%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.008%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.985%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.425%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding: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:114%">(in thousands)</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:114%">Acquisition Date Estimated Fair Value as of <br/>September 30, 2023</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:114%">Adjustment</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:114%">Acquisition Date Estimated Fair Value as of <br/>December 31, 2023</span></td><td colspan="3" style="padding:0 1pt"></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:114%">Cash paid</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:114%">$</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:114%">73,558 </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;border-top:1pt solid #000;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:114%">$</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:114%">— </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;border-top:1pt solid #000;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:114%">$</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:114%">73,558 </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="padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></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:114%">Estimated fair value of assets and liabilities acquired:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Cash</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:114%">$</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:114%">4,859 </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:114%">$</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:114%">— </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:114%">$</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:114%">4,859 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Accounts receivable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">1,347 </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 colspan="2" style="background-color:#cceeff;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:114%">(80)</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 colspan="2" style="background-color:#cceeff;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:114%">1,267 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Other assets</span></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:114%">2,981 </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="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:114%">659 </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="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:114%">3,640 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Intangible assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></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:114%">18,183 </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="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:114%">11,137 </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="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:114%">29,320 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">12,122 </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 colspan="2" style="background-color:#cceeff;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:114%">(4,279)</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 colspan="2" style="background-color:#cceeff;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:114%">7,843 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Current liabilities</span></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:114%">(3,606)</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="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:114%">(232)</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="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:114%">(3,838)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Deferred revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">(6,421)</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 colspan="2" style="background-color:#cceeff;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:114%">— </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 colspan="2" style="background-color:#cceeff;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:114%">(6,421)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:114%">Deferred income tax liabilities, net</span></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:114%">(6,112)</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="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:114%">(1,757)</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="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:114%">(7,869)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:114%">Total fair value of assets and liabilities acquired</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:114%">$</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:114%">23,353 </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;border-top:1pt solid #000;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:114%">$</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:114%">5,448 </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;border-top:1pt solid #000;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:114%">$</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:114%">28,801 </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="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt;text-indent:-2.27pt"></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:114%">Goodwill</span></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:114%">$</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:114%">50,205 </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:114%">$</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:114%">(5,448)</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:114%">$</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:114%">44,757 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></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%">The following table summarizes the estimated useful lives for each acquired intangible asset, each of which are subject to finalization:</span></div><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.575%"><tr><td style="width:1.0%"></td><td style="width:66.291%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.446%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.963%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="6" 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:114%">Estimated Useful Life</span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></td><td colspan="6" 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%">8.0 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="6" 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%">6.0 years</span></td></tr></table></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Other Acquisition Activity</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%">In the year ended December 31, 2023, we had other acquisition activity resulting in a total purchase price of $1.5 million, paid in cash. Assets acquired were primarily comprised of developed technology and customer relationships, totaling $0.9 million of estimated fair value. The remainder of the consideration transferred, $0.6 million, was allocated to goodwill.</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%">Effective October 4, 2022, we acquired all of the outstanding equity ownership interests of Canadian based InterTrade Systems Inc. ("InterTrade"), a leading EDI provider within the apparel and general merchandising markets. Pursuant to the definitive agreement, the purchase price was $49.1 million, including estimated post-closing adjustments. In the year ended December 31, 2023, provisional amounts were adjusted by $3.1 million, primarily relating to a $3.9 million decrease in estimated value of intangible assets and the corresponding $1.0 million change to the deferred tax position, with the offsets to goodwill. The purchase accounting was finalized in the year ended December 31, 2023.</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%">Effective July 19, 2022, we acquired all of the outstanding equity ownership interests of GCommerce, Inc. ("GCommerce"), a leading EDI provider within the automotive aftermarket industry. Pursuant to the definitive agreement, the purchase price was $45.1 million, including post-closing adjustments. In the year ended December 31, 2023, provisional amounts were adjusted by $1.6 million, primarily relating to a $1.5 million decrease in the estimated value of deferred income tax assets, with the corresponding offset to goodwill. The purchase accounting was finalized in the year ended December 31, 2023.</span></div> 63900000 68700000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date:</span></div><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.424%"><tr><td style="width:1.0%"></td><td style="width:44.312%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.341%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.985%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.008%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.985%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.425%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding: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:114%">(in thousands)</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:114%">Acquisition Date Estimated Fair Value as of <br/>September 30, 2023</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:114%">Adjustment</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:114%">Acquisition Date Estimated Fair Value as of <br/>December 31, 2023</span></td><td colspan="3" style="padding:0 1pt"></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:114%">Cash paid</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:114%">$</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:114%">73,558 </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;border-top:1pt solid #000;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:114%">$</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:114%">— </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;border-top:1pt solid #000;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:114%">$</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:114%">73,558 </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="padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></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:114%">Estimated fair value of assets and liabilities acquired:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Cash</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:114%">$</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:114%">4,859 </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:114%">$</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:114%">— </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:114%">$</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:114%">4,859 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Accounts receivable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">1,347 </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 colspan="2" style="background-color:#cceeff;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:114%">(80)</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 colspan="2" style="background-color:#cceeff;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:114%">1,267 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Other assets</span></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:114%">2,981 </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="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:114%">659 </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="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:114%">3,640 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Intangible assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></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:114%">18,183 </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="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:114%">11,137 </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="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:114%">29,320 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">12,122 </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 colspan="2" style="background-color:#cceeff;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:114%">(4,279)</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 colspan="2" style="background-color:#cceeff;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:114%">7,843 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Current liabilities</span></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:114%">(3,606)</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="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:114%">(232)</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="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:114%">(3,838)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Deferred revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">(6,421)</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 colspan="2" style="background-color:#cceeff;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:114%">— </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 colspan="2" style="background-color:#cceeff;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:114%">(6,421)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:114%">Deferred income tax liabilities, net</span></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:114%">(6,112)</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="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:114%">(1,757)</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="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:114%">(7,869)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:114%">Total fair value of assets and liabilities acquired</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:114%">$</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:114%">23,353 </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;border-top:1pt solid #000;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:114%">$</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:114%">5,448 </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;border-top:1pt solid #000;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:114%">$</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:114%">28,801 </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="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt;text-indent:-2.27pt"></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:114%">Goodwill</span></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:114%">$</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:114%">50,205 </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:114%">$</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:114%">(5,448)</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:114%">$</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:114%">44,757 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div> 73558000 73558000 4859000 4859000 1347000 -80000 1267000 2981000 659000 3640000 18183000 11137000 29320000 12122000 -4279000 7843000 3606000 232000 3838000 6421000 6421000 6112000 1757000 7869000 23353000 5448000 28801000 50205000 -5448000 44757000 <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%">The following table summarizes the estimated useful lives for each acquired intangible asset, each of which are subject to finalization:</span></div><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.575%"><tr><td style="width:1.0%"></td><td style="width:66.291%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.446%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.963%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="6" 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:114%">Estimated Useful Life</span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></td><td colspan="6" 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%">8.0 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></td><td colspan="6" 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%">6.0 years</span></td></tr></table></div> P8Y P6Y 1500000 900000 600000 49100000 -3100000 -3900000 1000000 45100000 -1600000 -1500000 Revenue<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We derive our revenues from the following revenue streams:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Recurring revenues:</span></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Fulfillment</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:114%">$</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:114%">436,702 </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:114%">$</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:114%">364,148 </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:114%">$</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:114%">306,851 </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 2px 7pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Analytics</span></td><td colspan="2" style="background-color:#cceeff;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:114%">51,703 </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 colspan="2" style="background-color:#cceeff;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:114%">46,894 </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 colspan="2" style="background-color:#cceeff;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:114%">42,674 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Other</span></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:114%">13,608 </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="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:114%">8,005 </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="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:114%">5,481 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Recurring Revenues</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">502,013 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">419,047 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">355,006 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">One-time revenues</span></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:114%">34,897 </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="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:114%">31,828 </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="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:114%">30,270 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total revenue</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">536,910 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">450,875 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">385,276 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Recurring Revenues</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Recurring revenues consist of recurring subscriptions from customers that utilize our Fulfillment, Analytics, and Other supply chain management products. Revenue for these products is generally recognized on a ratable basis over the contract term beginning on the date that our service is made available to the customer. Our contracts with our recurring revenue customers are recurring in nature, generally ranging from monthly to annual, and generally allow the customer to cancel the contract for any reason with 30 to 90 days’ notice. Timing of billings varies by customer and by contract type and are either in advance or within 30 days of the service being performed.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Given that the recurring revenue contracts are for one year or less, we have applied the optional exemption to not disclose information about the remaining performance obligations for recurring revenue contracts.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">One-time Revenues</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One-time revenues consist of set-up fees and miscellaneous fees from customers.</span></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Set- up revenues</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Set-up fees are specific for each connection a customer has with a trading partner. These nonrefundable fees are necessary for our customers to utilize our services and do not provide any standalone value. Many of our customers have connections with numerous trading partners.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Set-up fees constitute a material renewal option right that provide customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. As such, set-up fees and related costs are deferred and recognized ratably, generally over two years, which is the estimated period for which a material right is present for our customers.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: </span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></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:114%">$</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:114%">14,999 </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:114%">$</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:114%">14,459 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Invoiced set-up fees</span></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:114%">19,146 </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="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:114%">15,457 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Recognized set-up fees</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(16,542)</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 colspan="2" style="background-color:#cceeff;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:114%">(14,917)</span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">17,603 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">14,999 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The entire balance of deferred set-up fees will be recognized within two years. Those that will be recognized within the next year are classified as current, whereas the remainder are classified as non-current.</span></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Miscellaneous fees</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Miscellaneous fees primarily consist of professional services and testing and certification. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The contract period for these one-time fees is for one year or less and recognized at the time service is provided. We have applied the optional exemption to not disclose information about the remaining performance obligations for miscellaneous one-time fee contracts since they have original durations of one year or less.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Deferred Revenue</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In the year ended December 31, 2023, we recognized revenue of $57.4 million from amounts included in deferred revenue at December 31, 2022.</span></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We derive our revenues from the following revenue streams:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Recurring revenues:</span></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Fulfillment</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:114%">$</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:114%">436,702 </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:114%">$</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:114%">364,148 </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:114%">$</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:114%">306,851 </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 2px 7pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Analytics</span></td><td colspan="2" style="background-color:#cceeff;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:114%">51,703 </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 colspan="2" style="background-color:#cceeff;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:114%">46,894 </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 colspan="2" style="background-color:#cceeff;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:114%">42,674 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Other</span></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:114%">13,608 </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="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:114%">8,005 </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="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:114%">5,481 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Recurring Revenues</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">502,013 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">419,047 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">355,006 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">One-time revenues</span></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:114%">34,897 </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="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:114%">31,828 </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="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:114%">30,270 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total revenue</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">536,910 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">450,875 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">385,276 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 436702000 364148000 306851000 51703000 46894000 42674000 13608000 8005000 5481000 502013000 419047000 355006000 34897000 31828000 30270000 536910000 450875000 385276000 P30D P90D P30D P1Y P2Y <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: </span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></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:114%">$</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:114%">14,999 </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:114%">$</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:114%">14,459 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Invoiced set-up fees</span></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:114%">19,146 </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="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:114%">15,457 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Recognized set-up fees</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(16,542)</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 colspan="2" style="background-color:#cceeff;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:114%">(14,917)</span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">17,603 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">14,999 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 14999000 14459000 19146000 15457000 16542000 14917000 17603000 14999000 P2Y P1Y 57400000 Deferred Costs<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The deferred costs activity was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></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:114%">$</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:114%">70,179 </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:114%">$</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:114%">59,720 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Incurred deferred costs</span></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:114%">89,012 </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="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:114%">72,509 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Amortized deferred costs</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(76,441)</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 colspan="2" style="background-color:#cceeff;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:114%">(62,050)</span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">82,750 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">70,179 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The deferred costs activity was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></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:114%">$</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:114%">70,179 </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:114%">$</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:114%">59,720 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Incurred deferred costs</span></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:114%">89,012 </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="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:114%">72,509 </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 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Amortized deferred costs</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(76,441)</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 colspan="2" style="background-color:#cceeff;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:114%">(62,050)</span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">82,750 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">70,179 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 70179000 59720000 89012000 72509000 76441000 62050000 82750000 70179000 Fair Value Measurements<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:</span></div><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:25.869%"></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:6.778%"></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:9.051%"></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:9.051%"></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:9.051%"></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:9.051%"></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:9.051%"></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:9.056%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="33" style="border-bottom:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></div></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="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:8pt;font-weight:700;line-height:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="15" style="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:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="padding:0 1pt 0 13pt"></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:114%">Fair Value Level</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Amortized Cost</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Unrealized Gains (Losses), net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Fair Value</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Amortized Cost</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Unrealized Gains (Losses), net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Fair Value</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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Cash equivalents:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Money market funds</span></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:114%">Level 1</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:114%">$</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:114%">161,233 </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:114%">$</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:114%">— </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:114%">$</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:114%">161,233 </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:114%">$</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:114%">73,368 </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:114%">$</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:114%">— </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%">73,368 </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:700;line-height:114%">Investments:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Certificates of deposit</span></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:114%">Level 1</span></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:114%">6,805 </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="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:114%">— </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="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:114%">6,805 </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="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:114%">6,813 </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="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:114%">— </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="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%">6,813 </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 2px 13pt;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:114%">Marketable securities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;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:114%">Commercial paper</span></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:114%">Level 2</span></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:114%">48,860 </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="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:114%">694 </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="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:114%">49,554 </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="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:114%">44,224 </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="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:114%">375 </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="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%">44,599 </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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">216,898 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">694 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">217,592 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">124,405 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">375 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">124,780 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:<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:25.869%"></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:6.778%"></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:9.051%"></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:9.051%"></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:9.051%"></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:9.051%"></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:9.051%"></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:9.056%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="33" style="border-bottom:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></div></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="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:8pt;font-weight:700;line-height:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="15" style="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:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="padding:0 1pt 0 13pt"></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:114%">Fair Value Level</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Amortized Cost</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Unrealized Gains (Losses), net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Fair Value</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Amortized Cost</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Unrealized Gains (Losses), net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Fair Value</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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Cash equivalents:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Money market funds</span></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:114%">Level 1</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:114%">$</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:114%">161,233 </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:114%">$</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:114%">— </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:114%">$</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:114%">161,233 </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:114%">$</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:114%">73,368 </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:114%">$</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:114%">— </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%">73,368 </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:700;line-height:114%">Investments:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Certificates of deposit</span></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:114%">Level 1</span></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:114%">6,805 </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="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:114%">— </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="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:114%">6,805 </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="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:114%">6,813 </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="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:114%">— </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="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%">6,813 </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 2px 13pt;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:114%">Marketable securities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;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:114%">Commercial paper</span></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:114%">Level 2</span></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:114%">48,860 </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="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:114%">694 </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="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:114%">49,554 </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="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:114%">44,224 </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="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:114%">375 </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="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%">44,599 </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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">216,898 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">694 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">217,592 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">124,405 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">375 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">124,780 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 161233000 0 161233000 73368000 0 73368000 6805000 0 6805000 6813000 0 6813000 48860000 694000 49554000 44224000 375000 44599000 216898000 694000 217592000 124405000 375000 124780000 Allowance for Credit Losses<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The allowance for credit losses activity, included in accounts receivable, net, was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></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:114%">$</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:114%">3,066 </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:114%">$</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:114%">4,249 </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:114%">$</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:114%">4,233 </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 2px 13pt;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:114%">Provision for credit losses</span></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:114%">5,707 </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="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:114%">3,359 </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="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:114%">4,717 </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 2px 13pt;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:114%">Write-offs, net of recoveries</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(5,453)</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 colspan="2" style="background-color:#cceeff;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:114%">(4,542)</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 colspan="2" style="background-color:#cceeff;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:114%">(4,790)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Initial allowance for business combination acquired receivables</span></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:114%">— </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="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:114%">— </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="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:114%">89 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">3,320 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">3,066 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">4,249 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The allowance for credit losses activity, included in accounts receivable, net, was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></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:114%">$</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:114%">3,066 </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:114%">$</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:114%">4,249 </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:114%">$</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:114%">4,233 </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 2px 13pt;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:114%">Provision for credit losses</span></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:114%">5,707 </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="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:114%">3,359 </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="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:114%">4,717 </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 2px 13pt;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:114%">Write-offs, net of recoveries</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(5,453)</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 colspan="2" style="background-color:#cceeff;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:114%">(4,542)</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 colspan="2" style="background-color:#cceeff;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:114%">(4,790)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Initial allowance for business combination acquired receivables</span></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:114%">— </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="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:114%">— </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="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:114%">89 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">3,320 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">3,066 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">4,249 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 3066000 4249000 4233000 5707000 3359000 4717000 5453000 4542000 4790000 0 0 89000 3320000 3066000 4249000 Property and Equipment, Net<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net consisted of the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Internally developed software</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">60,396 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">49,994 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Computer equipment</span></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:114%">34,402 </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="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:114%">30,310 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Leasehold improvements</span></td><td colspan="2" style="background-color:#cceeff;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:114%">15,387 </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 colspan="2" style="background-color:#cceeff;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:114%">16,531 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Office equipment and furniture</span></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:114%">10,966 </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="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:114%">10,981 </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 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Property and equipment, cost</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:114%">121,151 </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:114%">107,816 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Less: accumulated depreciation and amortization</span></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:114%">(85,108)</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="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:114%">(72,358)</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 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total property and equipment, net</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">36,043 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">35,458 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Depreciation and amortization expense of property and equipment was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Depreciation and amortization expense</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">18,631 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">16,421 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">14,788 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 60396000 49994000 34402000 30310000 15387000 16531000 10966000 10981000 121151000 107816000 85108000 72358000 36043000 35458000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Depreciation and amortization expense of property and equipment was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Depreciation and amortization expense</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">18,631 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">16,421 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">14,788 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 18631000 16421000 14788000 Goodwill and Intangible Assets, Net<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Goodwill</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The activity in goodwill was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.848%"><tr><td style="width:1.0%"></td><td style="width:48.520%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.564%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:30.616%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 121.74pt;text-indent:-180pt"></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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">197,284 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Additions from business acquisitions</span></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:114%">45,393 </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 2px 13pt;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:114%">Foreign currency translation</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">2,328 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="6" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Remeasurement from provisional purchase accounting amount</span></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:114%">4,171 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">249,176 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Intangible Assets</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets, net consisted of the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:41.172%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></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:9.960%"></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:9.960%"></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:9.960%"></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:9.964%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="27" 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:114%">December 31, 2023</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:114%">($ in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Amount</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Accumulated <br/>Amortization </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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Foreign<br/>Currency <br/>Translation</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Weighted Average Remaining Amortization Period</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></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:114%">$</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:114%">105,228 </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:114%">$</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:114%">(32,097)</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:114%">$</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:114%">724 </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:114%">$</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:114%">73,855 </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:114%">6.6 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></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:114%">48,843 </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="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:114%">(15,669)</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="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:114%">315 </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="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:114%">33,489 </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:114%">5.0 years</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">154,071 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">(47,766)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">1,039 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">107,344 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">6.1 years</span></td></tr></table></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:41.172%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></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:9.960%"></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:9.960%"></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:9.960%"></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:9.964%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="27" 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:114%">December 31, 2022</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:114%">($ in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Amount</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Accumulated <br/>Amortization </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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Foreign<br/>Currency <br/>Translation</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Weighted Average Remaining Amortization Period</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></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:114%">$</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:114%">80,101 </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:114%">$</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:114%">(22,255)</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:114%">$</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:114%">(171)</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:114%">$</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:114%">57,675 </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:114%">6.8 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></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:114%">40,610 </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="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:114%">(9,934)</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="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:114%">1 </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="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:114%">30,677 </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:114%">5.4 years</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">120,711 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">(32,189)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">(170)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">88,352 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">6.4 years</span></td></tr></table></div><div style="margin-top:6pt"><span><br/></span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Amortization expense of intangible assets was as follows:</span></div><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:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Amortization expense</span></div></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">16,116 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">11,768 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">10,126 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span><br/></span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated future annual amortization expense related to intangible assets is as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2024</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:114%">$</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:114%">18,842 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2025</span></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:114%">18,704 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2026</span></td><td colspan="2" style="background-color:#cceeff;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:114%">17,700 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2027</span></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:114%">17,226 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2028</span></td><td colspan="2" style="background-color:#cceeff;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:114%">15,959 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Thereafter</span></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:114%">18,913 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total future amortization</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">107,344 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The activity in goodwill was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.848%"><tr><td style="width:1.0%"></td><td style="width:48.520%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.564%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:30.616%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 121.74pt;text-indent:-180pt"></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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">197,284 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Additions from business acquisitions</span></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:114%">45,393 </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 2px 13pt;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:114%">Foreign currency translation</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">2,328 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="6" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Remeasurement from provisional purchase accounting amount</span></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:114%">4,171 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Balance, end of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">249,176 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 197284000 45393000 2328000 4171000 249176000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets, net consisted of the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:41.172%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></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:9.960%"></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:9.960%"></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:9.960%"></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:9.964%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="27" 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:114%">December 31, 2023</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:114%">($ in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Amount</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Accumulated <br/>Amortization </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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Foreign<br/>Currency <br/>Translation</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Weighted Average Remaining Amortization Period</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></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:114%">$</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:114%">105,228 </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:114%">$</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:114%">(32,097)</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:114%">$</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:114%">724 </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:114%">$</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:114%">73,855 </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:114%">6.6 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></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:114%">48,843 </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="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:114%">(15,669)</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="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:114%">315 </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="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:114%">33,489 </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:114%">5.0 years</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">154,071 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">(47,766)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">1,039 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">107,344 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">6.1 years</span></td></tr></table></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:41.172%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></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:9.960%"></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:9.960%"></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:9.960%"></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:9.964%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="27" 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:114%">December 31, 2022</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:114%">($ in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Amount</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Accumulated <br/>Amortization </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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:115%">Foreign<br/>Currency <br/>Translation</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Net</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">Weighted Average Remaining Amortization Period</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Subscriber relationships</span></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:114%">$</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:114%">80,101 </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:114%">$</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:114%">(22,255)</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:114%">$</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:114%">(171)</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:114%">$</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:114%">57,675 </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:114%">6.8 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Developed technology</span></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:114%">40,610 </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="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:114%">(9,934)</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="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:114%">1 </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="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:114%">30,677 </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:114%">5.4 years</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">120,711 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">(32,189)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">(170)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">88,352 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">6.4 years</span></td></tr></table></div> 105228000 32097000 724000 73855000 P6Y7M6D 48843000 15669000 315000 33489000 P5Y 154071000 47766000 1039000 107344000 P6Y1M6D 80101000 22255000 -171000 57675000 P6Y9M18D 40610000 9934000 1000 30677000 P5Y4M24D 120711000 32189000 -170000 88352000 P6Y4M24D <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Amortization expense of intangible assets was as follows:</span></div><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:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Amortization expense</span></div></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">16,116 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">11,768 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">10,126 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 16116000 11768000 10126000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The estimated future annual amortization expense related to intangible assets is as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2024</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:114%">$</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:114%">18,842 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2025</span></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:114%">18,704 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2026</span></td><td colspan="2" style="background-color:#cceeff;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:114%">17,700 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2027</span></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:114%">17,226 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2028</span></td><td colspan="2" style="background-color:#cceeff;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:114%">15,959 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Thereafter</span></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:114%">18,913 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total future amortization</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">107,344 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 18842000 18704000 17700000 17226000 15959000 18913000 107344000 Commitments and Contingencies<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Leases</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We are engaged in a lease agreement for our current headquarters located in Minneapolis, Minnesota where we lease approximately 198,000 square feet under an agreement that expires in 2027. The lease also has two options to extend the term for five years each at a market rate determined in accordance with the lease. We lease other smaller facilities across the U.S. and international locations.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The components of lease expense were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Operating lease cost</span></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:114%">$</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:114%">3,123 </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:114%">$</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:114%">3,087 </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:114%">$</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:114%">3,089 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Variable lease cost</span></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:114%">3,771 </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="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:114%">3,576 </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="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:114%">3,660 </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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">6,894 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">6,663 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">6,749 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Supplemental cash flow information related to leases was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Cash paid for amounts included in the measurement of lease liabilities</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Operating cash flows from operating leases</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5,022 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></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:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4,639 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Right-of-use assets obtained in exchange for operating lease liabilities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">1,147 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">934 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Supplemental balance sheet information related to operating leases was as follows: </span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></td><td style="width:0.1%"></td></tr><tr><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:114%">December 31, 2023</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:114%">December 31, 2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Weighted-average remaining lease term</span></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 7pt 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:114%">3.1 years</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 13pt 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:114%">3.9 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Weighted-average discount rate</span></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:114%">4.0 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">4.0 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At December 31, 2023, our future minimum payments under operating leases were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2024</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4,910 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2025</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4,694 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2026</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,947 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2027</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">1,299 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2028</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">25 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Thereafter</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">76 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total future gross payments</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">14,951 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Less: imputed interest</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(922)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total operating lease liabilities</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">14,029 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Purchase Commitments</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have entered into separate noncancelable agreements with computing infrastructure, productivity software, customer relationship management, and performance and security data analytics vendors for services through 2026. At December 31, 2023, our remaining purchase commitments and estimated purchase timing were as follows: </span></div><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:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></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:0 1pt"></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%">2024</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%">14,536 </span></td><td style="background-color:#cceeff;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%">2025</span></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%">14,186 </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%">2026</span></td><td colspan="2" style="background-color:#cceeff;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%">6,342 </span></td><td style="background-color:#cceeff;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 remaining purchase commitments</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">35,064 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Contingencies</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We may be involved in various claims and legal actions in the normal course of business. We believe that the outcome of any such claim or legal action is not expected to have a material adverse effect on our financial position or results of operations.</span></div> 198000 2 P5Y <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The components of lease expense were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Operating lease cost</span></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:114%">$</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:114%">3,123 </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:114%">$</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:114%">3,087 </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:114%">$</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:114%">3,089 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Variable lease cost</span></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:114%">3,771 </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="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:114%">3,576 </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="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:114%">3,660 </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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">6,894 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">6,663 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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:114%">6,749 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 3123000 3087000 3089000 3771000 3576000 3660000 6894000 6663000 6749000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Supplemental cash flow information related to leases was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Cash paid for amounts included in the measurement of lease liabilities</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Operating cash flows from operating leases</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">5,022 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></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:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4,639 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Right-of-use assets obtained in exchange for operating lease liabilities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">1,147 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">934 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"></td></tr></table></div> 5022000 4639000 1147000 934000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Supplemental balance sheet information related to operating leases was as follows: </span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></td><td style="width:0.1%"></td></tr><tr><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:114%">December 31, 2023</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:114%">December 31, 2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Weighted-average remaining lease term</span></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 7pt 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:114%">3.1 years</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 13pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 13pt 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:114%">3.9 years</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Weighted-average discount rate</span></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:114%">4.0 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">4.0 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr></table></div> P3Y1M6D P3Y10M24D 0.040 0.040 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At December 31, 2023, our future minimum payments under operating leases were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></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:114%">(in thousands)</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2024</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4,910 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2025</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4,694 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2026</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,947 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2027</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">1,299 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2028</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">25 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Thereafter</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">76 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total future gross payments</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">14,951 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Less: imputed interest</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(922)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total operating lease liabilities</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">14,029 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 4910000 4694000 3947000 1299000 25000 76000 14951000 922000 14029000 At December 31, 2023, our remaining purchase commitments and estimated purchase timing were as follows: <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:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></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:0 1pt"></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%">2024</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%">14,536 </span></td><td style="background-color:#cceeff;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%">2025</span></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%">14,186 </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%">2026</span></td><td colspan="2" style="background-color:#cceeff;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%">6,342 </span></td><td style="background-color:#cceeff;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 remaining purchase commitments</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">35,064 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 14536000 14186000 6342000 35064000 Stockholders’ Equity<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Share Repurchase Program</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through December 31, 2023 were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.787%"><tr><td style="width:1.0%"></td><td style="width:17.611%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.623%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.169%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.169%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.169%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.177%"></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:114%">(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:114%">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:114%">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:114%">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:114%">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:114%">Unused &amp; 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:114%">Share Value Available for Future Repurchase</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:114%">2019 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:114%">November 2019</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:114%">November 2021</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:114%">$</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:114%">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:114%">$</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:114%">29,611 </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:114%">$</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:114%">20,389 </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:114%">N/A</span></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:114%">2021 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:114%">November 2021</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:114%">August 2022</span></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:114%">50,000 </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="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:114%">49,992 </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="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:114%">8 </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:114%">N/A</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:114%">2022 Program</span></td><td colspan="3" style="background-color:#cceeff;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:114%">August 2022</span></td><td colspan="3" style="background-color:#cceeff;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:114%">July 2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">50,000 </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 colspan="2" style="background-color:#cceeff;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:114%">2,992 </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 colspan="3" style="background-color:#cceeff;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:114%">N/A</span></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:114%">$</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:114%">47,008 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The share repurchase activity by period was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">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:114%">— </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:114%">361,745 </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:114%">176,103 </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:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Shares 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:114%">$</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:114%">— </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:114%">$</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:114%">43,215 </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:114%">$</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:114%">20,430 </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:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Average price 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%">— </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:114%">$</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:114%">119.46 </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:114%">$</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:114%">116.01 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through December 31, 2023 were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.787%"><tr><td style="width:1.0%"></td><td style="width:17.611%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.623%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.169%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.169%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.169%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.413%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.177%"></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:114%">(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:114%">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:114%">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:114%">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:114%">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:114%">Unused &amp; 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:114%">Share Value Available for Future Repurchase</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:114%">2019 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:114%">November 2019</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:114%">November 2021</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:114%">$</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:114%">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:114%">$</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:114%">29,611 </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:114%">$</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:114%">20,389 </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:114%">N/A</span></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:114%">2021 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:114%">November 2021</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:114%">August 2022</span></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:114%">50,000 </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="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:114%">49,992 </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="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:114%">8 </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:114%">N/A</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:114%">2022 Program</span></td><td colspan="3" style="background-color:#cceeff;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:114%">August 2022</span></td><td colspan="3" style="background-color:#cceeff;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:114%">July 2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">50,000 </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 colspan="2" style="background-color:#cceeff;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:114%">2,992 </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 colspan="3" style="background-color:#cceeff;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:114%">N/A</span></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:114%">$</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:114%">47,008 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The share repurchase activity by period was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">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:114%">— </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:114%">361,745 </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:114%">176,103 </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:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Shares 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:114%">$</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:114%">— </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:114%">$</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:114%">43,215 </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:114%">$</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:114%">20,430 </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:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Average price 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%">— </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:114%">$</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:114%">119.46 </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:114%">$</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:114%">116.01 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 50000000 29611000 20389000 50000000 49992000 8000 50000000 2992000 47008000 0 361745 176103 0 43215000 20430000 0 119.46 116.01 Stock-Based Compensation<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our equity compensation plans provide for the grant of incentive and nonqualified stock options, as well as other stock-based awards including PSUs, RSAs, RSUs, and DSUs, to employees, non-employee directors and other consultants who provide services to us. We also provide an ESPP and 401(k) stock match to eligible participants.</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;font-weight:400;line-height:120%"> </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We recognize stock-based compensation expense based on grant date award fair value. This cost is recognized over the period for which the employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. At December 31, 2023 there were 12.7 million shares available for grant under approved equity compensation plans.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense was allocated in the consolidated statements of comprehensive income as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Cost of revenues</span></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%">10,169 </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%">8,684 </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%">6,760 </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%">Operating expenses</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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%">Sales and marketing</span></td><td colspan="2" style="background-color:#cceeff;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%">9,774 </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 colspan="2" style="background-color:#cceeff;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%">7,590 </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 colspan="2" style="background-color:#cceeff;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%">6,248 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Research and development</span></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%">7,200 </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="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%">5,634 </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="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%">4,384 </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 2px 13pt;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%">General and administrative</span></td><td colspan="2" style="background-color:#cceeff;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%">18,365 </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 colspan="2" style="background-color:#cceeff;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%">11,491 </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 colspan="2" style="background-color:#cceeff;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%">10,182 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">45,508 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">33,399 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">27,574 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense by grant type or plan was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Stock options</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">1,947 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">1,903 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">2,057 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">PSUs</span></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:114%">11,886 </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="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:114%">7,509 </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="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:114%">6,417 </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"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">RSUs &amp; DSUs</span></div></td><td colspan="2" style="background-color:#cceeff;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:114%">26,185 </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 colspan="2" style="background-color:#cceeff;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:114%">19,282 </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 colspan="2" style="background-color:#cceeff;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:114%">15,388 </span></td><td style="background-color:#cceeff;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"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">RSAs</span></div></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:114%">472 </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="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:114%">437 </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="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:114%">434 </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:114%">ESPP</span></td><td colspan="2" style="background-color:#cceeff;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:114%">2,488 </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 colspan="2" style="background-color:#cceeff;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:114%">2,144 </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 colspan="2" style="background-color:#cceeff;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:114%">1,391 </span></td><td style="background-color:#cceeff;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:114%">401(k) stock match</span></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:114%">2,530 </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="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:114%">2,124 </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="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:114%">1,887 </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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">45,508 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">33,399 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">27,574 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2023, there was $52.0 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a primarily straight-line basis over a weighted-average period of 2.4 years.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock Options</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Options generally vest over four years and, upon vesting, the holder is given the option to purchase shares of common stock at a specific strike price until expiration, which is generally seven years from the grant date.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our stock option activity was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Options (#)</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:114%">Weighted Average<br/>Exercise Price <br/>($/share)</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">944,886</span></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:114%">36.71 </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 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">53,223</span></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:114%">105.53 </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 2px 13pt;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:114%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(311,378)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">30.10 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(8,081)</span></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:114%">68.62 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">678,650</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">44.76 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">56,430</span></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:114%">122.59 </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 2px 13pt;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:114%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(164,393)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">29.86 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(7,990)</span></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:114%">92.48 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">562,697</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">56.24 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">42,215</span></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:114%">152.68 </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 2px 13pt;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:114%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(254,353)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">38.75 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(3,737)</span></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:114%">129.43 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2023</span></td><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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:114%">346,822</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">80.02 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Of the total outstanding options at December 31, 2023, 0.3 million</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">were exercisable. The outstanding and exercisable options had a weighted average exercise price of $67.07</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">per share and a weighted average remaining contractual life of 3.1 years.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below presents additional information related to our stock options:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands, except per share data)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Fair value of options vested</span></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:114%">$</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:114%">1,966 </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:114%">$</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:114%">1,996 </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:114%">$</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:114%">2,509 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Intrinsic value of options exercised</span></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:114%">31,227 </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="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:114%">16,705 </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="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:114%">27,713 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Intrinsic value of options outstanding</span></td><td colspan="2" style="background-color:#cceeff;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:114%">39,474 </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 colspan="2" style="background-color:#cceeff;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:114%">40,692 </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 colspan="2" style="background-color:#cceeff;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:114%">66,235 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Weighted-average fair value per share of options granted</span></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:114%">56.47 </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="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:114%">41.34 </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="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:114%">31.31 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:56.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></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.536%"></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.538%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</span></td></tr><tr><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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Life (in years)</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">4.2</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4.3</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4.4</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Volatility</span></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:114%">39 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">38 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">35 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Dividend yield</span></td><td colspan="2" style="background-color:#cceeff;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;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;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;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;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;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Risk-free interest rate</span></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:114%">4.00 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">2.50 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">0.59 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr></table></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Performance Share Units, Restricted Stock Units and Awards, and Deferred Stock Units</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2023, 2022, and 2021 we granted PSU awards with certain target performance levels. These awards are earned based upon our Company’s total shareholder return as compared to an indexed total shareholder return over the course of a fiscal based three-year performance period, starting in the year of grant. Earned awards vest in the quarter following the conclusion of the performance period. Expense is recognized on a straight-line basis over the performance period, regardless of whether the market condition is satisfied as the likelihood of the market condition being met is included in the fair-value measurement of the award.</span><span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> In </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2023</span><span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, PSU awards granted in 2020 were earned and vested at the maximum performance level and less than 0.2 million shares of common stock were issued.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RSUs generally vest over four years and, upon vesting, the holder is entitled to receive shares of our common stock. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RSAs vest over one year and, upon vesting, the holder is entitled to receive shares of our common stock. In lieu of RSAs, a participant may elect to receive DSUs with one year vesting, but the participant directs delayed receipt of common shares of up to ten years after the end of service to us. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></td><td style="width:0.1%"></td></tr><tr><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:114%">#</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:114%">Weighted Average Grant<br/>Date Fair Value <br/>($/share)</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">738,422</span></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:114%">52.37 </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 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">314,290</span></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:114%">101.85 </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 2px 13pt;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:114%">Vested and common stock issued</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(331,669)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">44.14 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(18,883)</span></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:114%">66.35 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">702,160</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">78.03 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">312,880</span></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:114%">126.44 </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 2px 13pt;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:114%">Vested and common stock issued</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(276,872)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">64.12 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(26,010)</span></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:114%">99.37 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">712,158</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">103.93 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">416,377</span></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:114%">163.55 </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 2px 13pt;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:114%">Vested and common stock issued</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(344,087)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">77.52 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(11,034)</span></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:114%">122.97 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2023</span></td><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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:114%">773,414</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">147.50 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The number of PSUs, RSUs, RSAs, and DSUs outstanding at December 31, 2023 included less than 0.1 million units that have vested, but the shares of common stock have not yet been issued, pursuant to the terms of the agreements.</span></div><div style="margin-top:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Employee Stock Purchase Plan</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our ESPP activity was as follows: </span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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 share data)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Amounts for shares purchased</span></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%">8,114 </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%">6,676 </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%">4,737 </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%">Shares purchased</span></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%">63,641 </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="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%">70,107 </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="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%">55,726 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A total of 1.7 million shares of common stock are remaining for issuance under the plan at December 31, 2023.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</span></td></tr><tr><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:bottom"><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="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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Life (in years)</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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%">0.5</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.5</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.5</span></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%">Volatility</span></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%">36 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">42 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">32 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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></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%">Dividend yield</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 7pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt 0 7pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 7pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt 0 7pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 7pt 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></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%">Risk-free interest rate</span></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%">4.92 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">1.27 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">0.07 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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></tr></table></div> 12700000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense was allocated in the consolidated statements of comprehensive income as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Cost of revenues</span></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%">10,169 </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%">8,684 </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%">6,760 </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%">Operating expenses</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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%">Sales and marketing</span></td><td colspan="2" style="background-color:#cceeff;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%">9,774 </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 colspan="2" style="background-color:#cceeff;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%">7,590 </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 colspan="2" style="background-color:#cceeff;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%">6,248 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Research and development</span></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%">7,200 </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="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%">5,634 </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="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%">4,384 </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 2px 13pt;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%">General and administrative</span></td><td colspan="2" style="background-color:#cceeff;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%">18,365 </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 colspan="2" style="background-color:#cceeff;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%">11,491 </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 colspan="2" style="background-color:#cceeff;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%">10,182 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">45,508 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">33,399 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:#ffffff;border-bottom:3pt double #000;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%">27,574 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense by grant type or plan was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Stock options</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">1,947 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">1,903 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">2,057 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">PSUs</span></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:114%">11,886 </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="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:114%">7,509 </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="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:114%">6,417 </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"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">RSUs &amp; DSUs</span></div></td><td colspan="2" style="background-color:#cceeff;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:114%">26,185 </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 colspan="2" style="background-color:#cceeff;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:114%">19,282 </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 colspan="2" style="background-color:#cceeff;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:114%">15,388 </span></td><td style="background-color:#cceeff;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"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">RSAs</span></div></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:114%">472 </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="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:114%">437 </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="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:114%">434 </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:114%">ESPP</span></td><td colspan="2" style="background-color:#cceeff;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:114%">2,488 </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 colspan="2" style="background-color:#cceeff;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:114%">2,144 </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 colspan="2" style="background-color:#cceeff;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:114%">1,391 </span></td><td style="background-color:#cceeff;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:114%">401(k) stock match</span></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:114%">2,530 </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="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:114%">2,124 </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="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:114%">1,887 </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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">45,508 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">33,399 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;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:114%">27,574 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 10169000 8684000 6760000 9774000 7590000 6248000 7200000 5634000 4384000 18365000 11491000 10182000 45508000 33399000 27574000 1947000 1903000 2057000 11886000 7509000 6417000 26185000 19282000 15388000 472000 437000 434000 2488000 2144000 1391000 2530000 2124000 1887000 45508000 33399000 27574000 52000000.0 P2Y4M24D P4Y P7Y <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our stock option activity was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></td><td style="width:0.1%"></td></tr><tr><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:114%">Options (#)</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:114%">Weighted Average<br/>Exercise Price <br/>($/share)</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">944,886</span></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:114%">36.71 </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 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">53,223</span></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:114%">105.53 </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 2px 13pt;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:114%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(311,378)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">30.10 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(8,081)</span></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:114%">68.62 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">678,650</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">44.76 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">56,430</span></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:114%">122.59 </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 2px 13pt;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:114%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(164,393)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">29.86 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(7,990)</span></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:114%">92.48 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">562,697</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">56.24 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">42,215</span></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:114%">152.68 </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 2px 13pt;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:114%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(254,353)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">38.75 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(3,737)</span></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:114%">129.43 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2023</span></td><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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:114%">346,822</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">80.02 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 944886 36.71 53223 105.53 311378 30.10 8081 68.62 678650 44.76 56430 122.59 164393 29.86 7990 92.48 562697 56.24 42215 152.68 254353 38.75 3737 129.43 346822 80.02 300000 67.07 P3Y1M6D <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below presents additional information related to our stock options:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands, except per share data)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Fair value of options vested</span></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:114%">$</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:114%">1,966 </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:114%">$</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:114%">1,996 </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:114%">$</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:114%">2,509 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Intrinsic value of options exercised</span></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:114%">31,227 </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="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:114%">16,705 </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="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:114%">27,713 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Intrinsic value of options outstanding</span></td><td colspan="2" style="background-color:#cceeff;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:114%">39,474 </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 colspan="2" style="background-color:#cceeff;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:114%">40,692 </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 colspan="2" style="background-color:#cceeff;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:114%">66,235 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Weighted-average fair value per share of options granted</span></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:114%">56.47 </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="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:114%">41.34 </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="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:114%">31.31 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 1966000 1996000 2509000 31227000 16705000 27713000 39474000 40692000 66235000 56.47 41.34 31.31 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:56.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></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.536%"></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.538%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</span></td></tr><tr><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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Life (in years)</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">4.2</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4.3</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">4.4</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Volatility</span></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:114%">39 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">38 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">35 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Dividend yield</span></td><td colspan="2" style="background-color:#cceeff;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;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;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;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;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;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Risk-free interest rate</span></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:114%">4.00 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">2.50 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">0.59 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr></table></div> P4Y2M12D P4Y3M18D P4Y4M24D 0.39 0.38 0.35 0 0 0 0.0400 0.0250 0.0059 P3Y P3Y P3Y 200000 P4Y P1Y P1Y P10Y <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></td><td style="width:0.1%"></td></tr><tr><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:114%">#</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:114%">Weighted Average Grant<br/>Date Fair Value <br/>($/share)</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">738,422</span></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:114%">52.37 </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 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">314,290</span></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:114%">101.85 </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 2px 13pt;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:114%">Vested and common stock issued</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(331,669)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">44.14 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(18,883)</span></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:114%">66.35 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">702,160</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">78.03 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">312,880</span></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:114%">126.44 </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 2px 13pt;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:114%">Vested and common stock issued</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(276,872)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">64.12 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(26,010)</span></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:114%">99.37 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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:114%">712,158</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">103.93 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">416,377</span></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:114%">163.55 </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 2px 13pt;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:114%">Vested and common stock issued</span></td><td colspan="3" style="background-color:#cceeff;padding: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:114%">(344,087)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">77.52 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding: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:114%">(11,034)</span></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:114%">122.97 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Outstanding at December 31, 2023</span></td><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding: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:114%">773,414</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;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:114%">147.50 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 738422 52.37 314290 101.85 331669 44.14 18883 66.35 702160 78.03 312880 126.44 276872 64.12 26010 99.37 712158 103.93 416377 163.55 344087 77.52 11034 122.97 773414 147.50 100000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our ESPP activity was as follows: </span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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 share data)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Amounts for shares purchased</span></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%">8,114 </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%">6,676 </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%">4,737 </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%">Shares purchased</span></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%">63,641 </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="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%">70,107 </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="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%">55,726 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 8114000 6676000 4737000 63641 70107 55726 1700000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</span></td></tr><tr><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:bottom"><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="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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Life (in years)</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding: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%">0.5</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.5</span></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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.5</span></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%">Volatility</span></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%">36 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">42 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">32 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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></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%">Dividend yield</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 7pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt 0 7pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 7pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt 0 7pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 7pt 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></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%">Risk-free interest rate</span></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%">4.92 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">1.27 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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 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%">0.07 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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></tr></table></div> P0Y6M P0Y6M P0Y6M 0.36 0.42 0.32 0 0 0 0.0492 0.0127 0.0007 Income Taxes<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our provision for income taxes was comprised of the following components:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Current</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Federal</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%">20,168 </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%">13,881 </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%">1,559 </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 2px 13pt;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%">State</span></td><td colspan="2" style="background-color:#cceeff;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%">4,221 </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 colspan="2" style="background-color:#cceeff;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%">4,149 </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 colspan="2" style="background-color:#cceeff;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%">1,890 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Foreign</span></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%">2,103 </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="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%">1,990 </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="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%">1,610 </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%">Deferred</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Federal</span></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%">(5,425)</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="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%">(2,530)</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="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%">4,294 </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 2px 13pt;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%">State</span></td><td colspan="2" style="background-color:#cceeff;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%">(390)</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 colspan="2" style="background-color:#cceeff;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%">(751)</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 colspan="2" style="background-color:#cceeff;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%">(88)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Foreign</span></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%">(938)</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="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%">(549)</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="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%">(321)</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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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%">19,739 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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-bottom:3pt double #000;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%">16,190 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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-bottom:3pt double #000;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%">8,944 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our income tax expense differed from the amounts computed by applying the U.S. federal income tax rate to pretax income as a result of the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</span></td></tr><tr><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:bottom"><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="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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">U.S. statutory federal income tax rate</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%">21.0 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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 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%">21.0 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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 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%">21.0 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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></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%">Increase (decrease) resulting from:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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%">U.S. state income taxes, net of federal tax effect</span></td><td colspan="2" style="background-color:#cceeff;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%">5.1 </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 colspan="2" style="background-color:#cceeff;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%">4.6 </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 colspan="2" style="background-color:#cceeff;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%">4.5 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Tax impact of stock activity</span></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%">(5.6)</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="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%">(4.7)</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="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%">(12.8)</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 2px 13pt;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%">Nondeductible compensation</span></td><td colspan="2" style="background-color:#cceeff;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%">4.7 </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 colspan="2" style="background-color:#cceeff;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%">3.5 </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 colspan="2" style="background-color:#cceeff;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%">5.0 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Research and development credit</span></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%">(1.5)</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="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%">(1.5)</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="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%">(1.1)</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 2px 13pt;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%">Foreign derived intangible income</span></td><td colspan="2" style="background-color:#cceeff;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%">(1.3)</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 colspan="2" style="background-color:#cceeff;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%">(1.4)</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 colspan="2" style="background-color:#cceeff;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%">(1.3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Other</span></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%">0.7 </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="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%">1.2 </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="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%">1.4 </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%">Effective tax rate</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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%">23.1 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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%">22.7 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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%">16.7 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 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></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The significant components of our deferred income tax assets and liabilities were as follows:</span><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:71.930%"></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.083%"></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:114%">December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Deferred income tax assets</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Net operating loss and credit carryforwards</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:114%">$</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:114%">10,212 </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:114%">$</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:114%">9,970 </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 2px 13pt;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:114%">Stock-based compensation expense</span></td><td colspan="2" style="background-color:#cceeff;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:114%">6,304 </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 colspan="2" style="background-color:#cceeff;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:114%">5,084 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Accrued expenses</span></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:114%">6,067 </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="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:114%">4,469 </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 2px 13pt;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:114%">Operating lease liabilities</span></td><td colspan="2" style="background-color:#cceeff;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:114%">3,470 </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 colspan="2" style="background-color:#cceeff;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:114%">4,384 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Research and development capitalized</span></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:114%">17,007 </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="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:114%">9,591 </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 2px 13pt;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:114%">Other deferred income tax assets</span></td><td colspan="2" style="background-color:#cceeff;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:114%">2,705 </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 colspan="2" style="background-color:#cceeff;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:114%">2,408 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Gross deferred income tax assets</span></td><td colspan="2" style="background-color:#ffffff;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:114%">45,765 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;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;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:114%">35,906 </span></td><td style="background-color:#ffffff;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:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Less: valuation allowance</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(2,545)</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 colspan="2" style="background-color:#cceeff;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:114%">(1,873)</span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total net deferred income tax assets</span></td><td style="background-color:#ffffff;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:114%">$</span></td><td style="background-color:#ffffff;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:114%">43,220 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;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;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:114%">$</span></td><td style="background-color:#ffffff;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:114%">34,033 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Deferred income tax liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Deferred costs</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:114%">$</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:114%">(20,672)</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:114%">$</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:114%">(17,696)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Right-of-use assets</span></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:114%">(1,884)</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="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:114%">(2,338)</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 2px 13pt;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:114%">Depreciation and amortization</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(28,066)</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 colspan="2" style="background-color:#cceeff;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:114%">(20,282)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Other deferred income tax liabilities</span></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:114%">(1,065)</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="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:114%">(909)</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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total deferred income tax liabilities</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:114%">(51,687)</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:114%">(41,225)</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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Net deferred income tax liabilities</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">(8,467)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">(7,192)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2023, we had net operating loss carryforwards of $28.9 million for U.S. federal tax purposes, $5.6 million for state tax purposes, and $9.8 million for foreign tax purposes. If not utilized, the loss carryforwards will expire between 2024 and 2036 for federal tax purposes, between 2024 and 2043 for state tax purposes, and will not expire for foreign tax purposes.</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">Section 382 of the U.S. Internal Revenue Code generally imposes an annual limitation on the amount of net operating loss carryforwards that might be used to offset taxable income when a corporation has undergone significant changes in stock ownership. As of December 31, 2023, all $28.9 million of our federal net operating loss carryforwards are subject to Section 382 limitations, of which we believe $6.5 million will expire unused due to Section 382 limitations. Accordingly, our deferred income tax assets are reported net of the Section 382 limitations. </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We are subject to income taxes for U.S. federal and various state and international jurisdictions. We are generally subject to U.S. federal and state tax examinations for most prior tax years due to our net operating loss and R&amp;D credit carryforwards and the utilization of the carryforwards in years still open under statute.</span></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our provision for income taxes was comprised of the following components:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Current</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Federal</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%">20,168 </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%">13,881 </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%">1,559 </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 2px 13pt;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%">State</span></td><td colspan="2" style="background-color:#cceeff;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%">4,221 </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 colspan="2" style="background-color:#cceeff;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%">4,149 </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 colspan="2" style="background-color:#cceeff;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%">1,890 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Foreign</span></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%">2,103 </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="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%">1,990 </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="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%">1,610 </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%">Deferred</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Federal</span></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%">(5,425)</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="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%">(2,530)</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="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%">4,294 </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 2px 13pt;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%">State</span></td><td colspan="2" style="background-color:#cceeff;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%">(390)</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 colspan="2" style="background-color:#cceeff;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%">(751)</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 colspan="2" style="background-color:#cceeff;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%">(88)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Foreign</span></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%">(938)</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="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%">(549)</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="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%">(321)</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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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%">19,739 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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-bottom:3pt double #000;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%">16,190 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;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-bottom:3pt double #000;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%">8,944 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 20168000 13881000 1559000 4221000 4149000 1890000 2103000 1990000 1610000 -5425000 -2530000 4294000 -390000 -751000 -88000 -938000 -549000 -321000 19739000 16190000 8944000 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our income tax expense differed from the amounts computed by applying the U.S. federal income tax rate to pretax income as a result of the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</span></td></tr><tr><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:bottom"><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="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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">U.S. statutory federal income tax rate</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%">21.0 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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 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%">21.0 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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 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%">21.0 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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></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%">Increase (decrease) resulting from:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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%">U.S. state income taxes, net of federal tax effect</span></td><td colspan="2" style="background-color:#cceeff;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%">5.1 </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 colspan="2" style="background-color:#cceeff;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%">4.6 </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 colspan="2" style="background-color:#cceeff;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%">4.5 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Tax impact of stock activity</span></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%">(5.6)</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="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%">(4.7)</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="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%">(12.8)</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 2px 13pt;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%">Nondeductible compensation</span></td><td colspan="2" style="background-color:#cceeff;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%">4.7 </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 colspan="2" style="background-color:#cceeff;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%">3.5 </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 colspan="2" style="background-color:#cceeff;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%">5.0 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Research and development credit</span></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%">(1.5)</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="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%">(1.5)</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="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%">(1.1)</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 2px 13pt;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%">Foreign derived intangible income</span></td><td colspan="2" style="background-color:#cceeff;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%">(1.3)</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 colspan="2" style="background-color:#cceeff;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%">(1.4)</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 colspan="2" style="background-color:#cceeff;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%">(1.3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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%">Other</span></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%">0.7 </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="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%">1.2 </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="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%">1.4 </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%">Effective tax rate</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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%">23.1 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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%">22.7 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 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 colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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%">16.7 </span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 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></tr></table></div> 0.210 0.210 0.210 0.051 0.046 0.045 0.056 0.047 0.128 0.047 0.035 0.050 0.015 0.015 0.011 0.013 0.014 0.013 0.007 0.012 0.014 0.231 0.227 0.167 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The significant components of our deferred income tax assets and liabilities were as follows:</span><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:71.930%"></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.083%"></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:114%">December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Deferred income tax assets</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Net operating loss and credit carryforwards</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:114%">$</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:114%">10,212 </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:114%">$</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:114%">9,970 </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 2px 13pt;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:114%">Stock-based compensation expense</span></td><td colspan="2" style="background-color:#cceeff;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:114%">6,304 </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 colspan="2" style="background-color:#cceeff;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:114%">5,084 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Accrued expenses</span></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:114%">6,067 </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="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:114%">4,469 </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 2px 13pt;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:114%">Operating lease liabilities</span></td><td colspan="2" style="background-color:#cceeff;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:114%">3,470 </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 colspan="2" style="background-color:#cceeff;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:114%">4,384 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Research and development capitalized</span></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:114%">17,007 </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="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:114%">9,591 </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 2px 13pt;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:114%">Other deferred income tax assets</span></td><td colspan="2" style="background-color:#cceeff;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:114%">2,705 </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 colspan="2" style="background-color:#cceeff;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:114%">2,408 </span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Gross deferred income tax assets</span></td><td colspan="2" style="background-color:#ffffff;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:114%">45,765 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;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;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:114%">35,906 </span></td><td style="background-color:#ffffff;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:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Less: valuation allowance</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(2,545)</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 colspan="2" style="background-color:#cceeff;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:114%">(1,873)</span></td><td style="background-color:#cceeff;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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total net deferred income tax assets</span></td><td style="background-color:#ffffff;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:114%">$</span></td><td style="background-color:#ffffff;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:114%">43,220 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;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;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:114%">$</span></td><td style="background-color:#ffffff;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:114%">34,033 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Deferred income tax liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Deferred costs</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:114%">$</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:114%">(20,672)</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:114%">$</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:114%">(17,696)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Right-of-use assets</span></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:114%">(1,884)</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="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:114%">(2,338)</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 2px 13pt;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:114%">Depreciation and amortization</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(28,066)</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 colspan="2" style="background-color:#cceeff;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:114%">(20,282)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Other deferred income tax liabilities</span></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:114%">(1,065)</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="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:114%">(909)</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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Total deferred income tax liabilities</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:114%">(51,687)</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:114%">(41,225)</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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Net deferred income tax liabilities</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">(8,467)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">(7,192)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 10212000 9970000 6304000 5084000 6067000 4469000 3470000 4384000 17007000 9591000 2705000 2408000 45765000 35906000 2545000 1873000 43220000 34033000 20672000 17696000 1884000 2338000 28066000 20282000 1065000 909000 51687000 41225000 8467000 7192000 28900000 5600000 9800000 28900000 6500000 Other Income and Expense<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other income (expense), net included the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</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:114%">Investment income</span></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:114%">$</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:114%">7,660 </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:114%">$</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:114%">1,670 </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:114%">$</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:114%">278 </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:114%">Realized gain (loss) from foreign currency on cash and investments held</span></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:114%">1,726 </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="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:114%">(1,026)</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="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:114%">(1,456)</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:114%">Other expense, net</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(1,071)</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 colspan="2" style="background-color:#cceeff;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:114%">(502)</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 colspan="2" style="background-color:#cceeff;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:114%">(366)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;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:114%">Total other income (expense), net</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">8,315 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">142 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">(1,544)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other income (expense), net included the following:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</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:114%">Investment income</span></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:114%">$</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:114%">7,660 </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:114%">$</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:114%">1,670 </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:114%">$</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:114%">278 </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:114%">Realized gain (loss) from foreign currency on cash and investments held</span></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:114%">1,726 </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="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:114%">(1,026)</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="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:114%">(1,456)</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:114%">Other expense, net</span></td><td colspan="2" style="background-color:#cceeff;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:114%">(1,071)</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 colspan="2" style="background-color:#cceeff;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:114%">(502)</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 colspan="2" style="background-color:#cceeff;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:114%">(366)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;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:114%">Total other income (expense), net</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">8,315 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">142 </span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;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;border-bottom:3pt double #000;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:114%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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:114%">(1,544)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 7660000 1670000 278000 1726000 -1026000 -1456000 -1071000 -502000 -366000 8315000 142000 -1544000 Net Income Per Share<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The components and computation of basic and diluted net income per share were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands, except per share amounts)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Numerator</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Net income</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:114%">$</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:114%">65,824 </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:114%">$</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:114%">55,134 </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:114%">$</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:114%">44,597 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Denominator</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Weighted average common shares outstanding, basic</span></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:114%">36,646 </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="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:114%">36,117 </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="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:114%">35,928 </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 2px 25pt;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:114%">Options to purchase common stock and ESPP</span></td><td colspan="2" style="background-color:#cceeff;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:114%">265 </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 colspan="2" style="background-color:#cceeff;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:114%">382 </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 colspan="2" style="background-color:#cceeff;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:114%">529 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;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:114%">PSUs, RSUs, RSAs, and DSUs</span></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:114%">564 </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="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:114%">454 </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="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:114%">505 </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 2px 13pt;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:114%">Weighted average common shares outstanding, diluted</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:114%">37,475 </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:114%">36,953 </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:114%">36,962 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Net income per share</span></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Basic</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:114%">$</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:114%">1.80 </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:114%">$</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:114%">1.53 </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:114%">$</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:114%">1.24 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Diluted</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:114%">$</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:114%">1.76 </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:114%">$</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:114%">1.49 </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:114%">$</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:114%">1.21 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6pt;font-weight:400;line-height:120%"> </span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Anti-dilutive shares</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:114%">36 </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:114%">75 </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:114%">31 </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></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The components and computation of basic and diluted net income per share were as follows:</span></div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands, except per share amounts)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Numerator</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></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:0 1pt"></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:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Net income</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:114%">$</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:114%">65,824 </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:114%">$</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:114%">55,134 </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:114%">$</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:114%">44,597 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Denominator</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Weighted average common shares outstanding, basic</span></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:114%">36,646 </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="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:114%">36,117 </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="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:114%">35,928 </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 2px 25pt;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:114%">Options to purchase common stock and ESPP</span></td><td colspan="2" style="background-color:#cceeff;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:114%">265 </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 colspan="2" style="background-color:#cceeff;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:114%">382 </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 colspan="2" style="background-color:#cceeff;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:114%">529 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25pt;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:114%">PSUs, RSUs, RSAs, and DSUs</span></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:114%">564 </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="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:114%">454 </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="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:114%">505 </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 2px 13pt;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:114%">Weighted average common shares outstanding, diluted</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:114%">37,475 </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:114%">36,953 </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:114%">36,962 </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:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:114%">Net income per share</span></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 13pt;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:114%">Basic</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:114%">$</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:114%">1.80 </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:114%">$</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:114%">1.53 </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:114%">$</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:114%">1.24 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 13pt;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:114%">Diluted</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:114%">$</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:114%">1.76 </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:114%">$</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:114%">1.49 </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:114%">$</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:114%">1.21 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table> 65824000 55134000 44597000 36646000 36117000 35928000 265000 382000 529000 564000 454000 505000 37475000 36953000 36962000 1.80 1.53 1.24 1.76 1.49 1.21 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Anti-dilutive shares</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:114%">36 </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:114%">75 </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:114%">31 </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></table></div> 36000 75000 31000 Retirement Contributions<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We sponsor a 401(k) retirement savings plan for our U.S. employees. Eligible employees can contribute up to 80% of their compensation, subject to the limits established by law, and we match 50% of the employee’s contribution up to the first 6% of pre-tax annual compensation. A portion of our match is in Company stock, which is purchased from the open market by our plan provider and immediately deposited into the employee’s 401(k) account.</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;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%">Additionally, we make statutory contributions to retirement plans as required by local foreign government regulations.</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our total contributions were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Retirement contributions</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">6,627 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">5,386 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">4,790 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 0.80 0.50 0.06 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our total contributions were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</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:114%">(in thousands)</span></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Retirement contributions</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">6,627 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">5,386 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;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:114%">$</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">4,790 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div> 6627000 5386000 4790000 Geographic Information<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Statements of Comprehensive Income</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The percentage of domestic revenue, which we define as consolidated revenue that was attributable to customers based within the U.S., and domestic income before income taxes, which we define as the percentage of consolidated income before income taxes that was attributable to our subsidiaries based in the U.S., were as follows:</span></div><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:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</span></td></tr><tr><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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#CFF0FC;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Domestic revenue</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">84 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">84 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></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%">84 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Domestic income before income taxes</span></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:114%">94 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">91 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">89 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">No single jurisdiction outside of the U.S. had revenues in excess of 10%.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Property and Equipment</span></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">International property and equipment</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">15 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">13 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></td></tr></table></div> <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The percentage of domestic revenue, which we define as consolidated revenue that was attributable to customers based within the U.S., and domestic income before income taxes, which we define as the percentage of consolidated income before income taxes that was attributable to our subsidiaries based in the U.S., were as follows:</span></div><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:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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:114%">Year Ended December 31,</span></td></tr><tr><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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:114%">2021</span></td></tr><tr><td colspan="3" style="background-color:#CFF0FC;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Domestic revenue</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">84 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">84 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></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%">84 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 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></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Domestic income before income taxes</span></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:114%">94 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">91 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></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:114%">89 </span></td><td style="background-color:#ffffff;padding:2px 1pt 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:114%">%</span></td></tr></table></div><div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">No single jurisdiction outside of the U.S. had revenues in excess of 10%.</span></div> 0.84 0.84 0.84 0.94 0.91 0.89 <div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></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.083%"></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:114%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;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:114%">2023</span></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding: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:114%">2022</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">International property and equipment</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">15 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;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:114%">13 </span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 1pt 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:114%">%</span></td></tr></table></div> 0.15 0.13 Related Party Transactions<div style="margin-top:6pt;text-indent:27pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The SPS Commerce Foundation (the “Foundation”) is a Minnesota non-profit organization exempt from federal taxation under Section 501(c)(3) of the Internal Revenue Code. The Foundation was formed in 2015 to engage in, advance, support, promote and administer charitable activities. The directors of the Foundation are also our executive officers. These directors receive no compensation from the Foundation or us for the management services performed for the Foundation. The Foundation is not a subsidiary of ours and the financial results of the Foundation are not consolidated with our financial statements. We have no current legal obligations for future commitments to the Foundation. Our contributions to the Foundation were as follows:</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Foundation contributions</span></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%">2,300 </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%">2,750 </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%">2,400 </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></table></div> Our contributions to the Foundation were as follows:<div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:58.142%"></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.084%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" 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%">Year Ended December 31,</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)</span></td><td colspan="3" style="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:8pt;font-weight:700;line-height:100%">2023</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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%">Foundation contributions</span></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%">2,300 </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%">2,750 </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%">2,400 </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></table></div> 2300000 2750000 2400000 false false false false

M"I4DK86<"-F=?UU[OR 9+@[?^_*9-XG&@(M/ Y'4V6W!A@3\.==3A!:?,US06EP0P9; MZ0/U9>)VF3+-L/@XP ^F[!Q^B[6>B!3"RD3]:DM#RSH.C;$1"A[W2M+-J'@* MBXVH'LR_NT)]_/UOP^RO?]_H(6XP\_&U4K.]\L;N"H9KFRT4IBK!S!"R7&38 M$> J&?5P)_C[9!5?\4E\\)*\6)YQ.W(R;OVCL]/%9-OAP[)MIX>'G&[;&6'9 MACQKGQ4NEG>-N#K<%20B,51#]D)^[?V+U:!@;P2&:K[VN>E++;M0NQQ_E^/O M_!SG^L\,NQ_]L<_Q[8U6M3CCK#EJ2G4:?Y%*W40E-LCIK MF_WT,?'^3QG/O<$I>ZC>RR!)TI**JO@/9_R'5TO+VYP&=(%A%&-F2UD5Z6;X MTPF8+!Y,(G9BWM4LP;],"&JFJ9)F9EL$Q#P-0NE(X,*<=8@^G:G$^/V4-L*& M,5SYD:B;M. -,T_E5KMI,6$'-8%EI;"#.WP]J2'XFU.'I-.[+&^P[Y59/$E( M1!2UJ*[L<=M"5=C[)>(&$5,BV,0.D\KN1EG?*B_43+FF,?*RRX1K1"B2L*0Z M1+?O:=@&)*#"@"#N/%6'_!]=F?FPZA!3'++E_-J& ?47&Q2IO-AE:G";I3%G M1T\ .'6Z%#CU_WY6%%T+_[_.<>TS38FVN;KE'K3@"3&'>*,I>&U) (J54X?U^C+R$ M@?3@H5$C5\THO+L"> \QY+9S(2T!,YN$$0*X78(3::>0$K>UA9U9H!TFM@_B M-/W*W62=MC9V>C0@=X\P02T];I#U6PA]%B%RS13)/!QYWA)V%%G >QRNARG M!PKM(ZGG'S^Z]37V4?_%WUU:&E=;[X?>> 2>B+-U^FGLZ,;Y>(N,N>IN__3_ MZFH,!\_ \!9DG66Z+*8Q)CT2IV5XP/@4Y*X!]36:H&)Q^+@L&S33OZ ^O^'B M&,(XQYJGFK4D]WXJD!L_9%#=<.[ER)'/3,;>)+U#G3MW:>H3(BO!G@:^M.>A#Q"(@.$Y,N$IO&X2)(DR,Y9_,@=$J.*(6@&[LV>N M[L ;EW%\H!FDIRE\5O/[&A(?$)82UF!^H'>(^(1 3FZ$,)P)>Q%YAL1@FEDK MG16@X?]4OE#W"N4SW \<45#_X/["T_P$7]22(QVV+VU:D2]I*F$DQ M@\8H(P:CBB@[2"G?+)K=>S@7MTKZTJL9/#VD*'D<&O!9L:J)E>6\JUMN_*;T [6:._@?-]5 M6S<-YX:FS1"72U!]F>KA;(>O-Y;A_;!OI7)H$JT(<)N*R+Y3Y30.GP'\)OYN M5 Y:5OHHUS]4);9BMD:FT?(7/>.(<00(G")Z/!0ZYW-4 M<$B?&)?)B*?'?#8/O;W/UR&[V]'M_=^@_:U+\$5EF&3YH+!^@_?FUS0Y^,?E MY2?G4Q] U#8@A=F;-.\UB.U( ^#XE.R?+MG0^'Q?QF,0?-(&S75B.Z])Q&O) M':8YI@@GX$L^4.%:@" M,:/!+2"IZP]9-G01Y763";44%E&P26,5G:VGNIND\"?X,V@_BWYE3GU4O:#9 M1\ATY9'N?\FF+'DM=J#@*@VCI-*P*S / M=XT27[MPY!.:>8D3MN"?L!O2S#+7LB/UD>S13WK#]_2*^OS[OUV<'0X:0Y4['EMU/0=' MO6.R$"_S/,T*NM_V*[C7>)'L?'\ID.2LF=;F$MR)=%FA"06)ALM2, H*W_8= MQS@/:T7P/J5;FA1C(I5/+J6U]+&@8*=0MS^<1'#0LM&$W_8 Y;^V=NS.X&.< MP3K0@PP&[\U M-+?MM6ABXT>P&AI#A M*V!+3/])6LOTV_;7QC#[H5@WF_.Q8W.S03!<)\J9H:*M% M3P2*&S,WRZ!^E)$ZZ4_A=*S0>MQ1H2)VG$N;3B,"'.3$5F1[8+)E8P?#,(VQ MRM 7D8C/$R"E^NRV['CKM.S8$_GYO*RER)I"]"#]Y;X''I:8KIN4P= ,!.I; M1!UH'5\TX?XCH(:0LLP;!3/:B#^9J7\3U=-AQ3NL>(<5[[#B-:SX68<5[YIW M=K#OUC7OW- J^X=**.9-^.U*-[9]LV9>B-BGF*^'9OHY:H04&8M MC&*AB%47%[NWIAFQ#FA2-"U'Q7RF!#8)[PTD](]38UK8E+S0(&LB5FV91%VZ M@1E8MJND")*;B#+5E[2H.\WO'WB5 >H-$@5FNO+JWR,3]DT2Z\]KG1B( 'P)OFF3I&6[+Q,H8 (+Y[VR\Y'YH&(CA%K!CE5(-\/O M91;E(9-C$Q>R=$L5>';UFYKHFVJ@&KK)N@]KH6KXL3#3_;W-/B.5$!&D2%+' M>V,@V3OO_@$2VT#R*WTNJNV3CX_]\\-#!T_.Y8O2[IP9OD=L[R"Y/@CN%'XW MP9(_LI"YK.-.61(7,L+TXHAM9)_?\RZYR[*')KD#TEKQ'>-%( (,K20\.9BB MY='BB?/ 1KK!/I)"(JHH"J&<$8'!4KEZ3UA^$W[)I=>-=4 M9K1S+V$4Q".DO,76U]Q 9&'Q*:NS8D\X[WBR5%/E8ZH()2/451T- MKR(+895XZZ#6C*-90DVF!R^&YU"!*"3,Q4\1+ZJZ*.F,6-9_??G%;<:_L M6/J^I(SCX"3CFB16=Q;HR%9AJM7P9?A[2>SI[WZY^O+VTJ__ G.]L&/LMR9Z M5<3D0 D7(45U"S)BB\K-9^V(IK*"BQV>63&N^(H9OG@U+@F8<'G9U*O?0#KG M.R8Q3MXRAYF:;_-2_*0!UH,&QQHSMUW$QH7\>W@>[L5\.YGL,F=@X#U;5"-T M=YG4B:V>VPV T9MFHB=$;^ *"U."LBUB2!'-R@S[P."=7I-++ -!O6DJ'O1' M:=L5V+L8+J0@">@M"AER*6*"[W=FA]WE$OJ[&QVLR>A]<\=)BVA2JPPC:5(\ M-Z=/W($$QW,>,H:.;H.X9*FR,9T* WY]TARI;3J@>@0$1)%A-3^5SGU:%G($ MR(, 16'C6Y7H%!DX3M1"7UM8.W.+$&GXM-P4Y8Q0FQ15HJXF"MX3YJ;SPC!- MOWHX9;IP.'0A0=A4"@$+;!>@ MPW7$HS#T3/ZPX?[E2H(5@N#/Z2!X?#DI4C M(O/7;^:1X*TG^HG#)M2S08=5VG9&O]PKD\(>(JU>R, -B;L]@*T>@M%8E 5A M6JB6$2X514<3>2T:GF9,'A)=W.8L-.+DX1B(#_.>,7$'-["7HYN$^K>X& O6 MT.S,HK9@-D>)>L'FT4.Y5PUWB>.QK'4'6DN]'/XNK;RB!%M])4+IH>M(K\P= M(0N(O8;4G3:]4GAR' E"$V$;JS5B87I84")IZ2?U?!?(2M:C#WED\VB+?$"] M71I7PLGQX(K=D_VMV'V#K,38(>72:NA/U()*3MX[B1SO8>#D7OXEA]'G041+ MIID,W6'K&M7&UH7+BQOTK-*,\BD7ORW!P-6*2S1@+G7F1/^AH_PPBM_+\$;' M"5#%88^DF5/?'A#WL&@O#(BHT"#'G&L85!J5ZT6*V'+9K_2-;O8K!%*XW'$J MMOQ'7%@3SH%EC-CA$.N&C<&U!LPV%Q)-5+ZBW=-1D&7$/V)L"&VZRWU.9;IV M'K7.0)8*0M#M)D[*Z=B%E7.:'^E+)\A3*GQL)*["4([05@E7%6ZPG0;S'_,G MR-1Q7IAF5DY7N L=7J_#ZW5XO0ZO5\/KG7=XO0ZOU^'U6H?76YUD\T;:9'>" M*C,TV>=H+VC# HW7-!&7&0U9,&<,;Z;M;DOAE0IGP0J>T$6+$\V6: 1VCJ\] M:+ X?+9;L-SJF[7K*K%2; S"1AH,J>#:PZ 0DD]J$![8P7*?#-U/>[,0*_DU M%-&-J1UG-<67$MXQ\?2-ZK9+U.77^VZ]PR_])6CLHFL_?$0S[X_QV26)%+HJZH9\QZES$PB3KX$:==]PII_,\&M]J1+1M&$?CFEV^_9"% M5B-,>]ZU*@[*&67/.>0ES9*YYSKFHMTR>UL8.0DD*13428>, 622E)'*OBODF MDK_IK.3W&IY6T'8HLPO4D";#2/F MXFRZOF8E.6S"Y[5D@0]_0KN63CT9?QG]0C*[M65MG?W7N 110JOGHI86!>%A),"8.(J8WU5+H&)&6&D%5ZN;X"[J%)EK =A_=O58;76H/JZWU]P57R M<(X7;@X9'4Y+DFK.*8'0, PL_ (JD3Q+L7%EAGO*2Y"/(_DB5A[MIT& AE M)I7[3")UJ_^H'Z%,8*!M$OVQGM)SE!'NCI-_=1-C$L4)%U)PO*]N$QL&_+XIDQ][RWUC 2X :SZ)%[X'@/*&C$'#Y2 M)!EL3YBDX(*JIG 5ZT+4FEY ""^.IK[:QU'W71NSAM_LNR)RW__7$WIFY,>SJFXQ_AE1RBR2C/,1\;],WG M1%^(!H#/>H31]E"'OEYA>;+V66I[;M6B;K8N&^X8-"&-9KW?P&YC2XZ/_4/CSI5M*>[T[_H]9^I)MK8M92>Q6UR M+>L-89>JXE72W3#OMDCW^< _/+W84,";]WEKRJ?VNHV53WNWY^BHU^W-GNY- M_^0(CLZF]W:W/=W1>?9[,[CP#P^/N]W9S]WIG^_JY/R@7 8O\]&>6Y[_R-*< MFS%&Q8.L3IG\>EFMELC>TYR;_\(T[/=V)F_SX>_.DCMO@ MXLP_?VA*KCMNW7'KCMM&&? S__"HN]Q:MV_]B]Y@-Z?M.81@/R[TC7Y0/DQF M_OTHL0>Y@BWX?K_QE-MX\PP&_L71Z;,P]5JX M/8/!QJ&R;F\>#4/4]\_.=F2W==NSQM'IU-J^[DW?[Y]NFI_I=N>Q=N>P=]YJ M;[0=QN=GE:L@0Q9'2S"*M(+/#"%T[\W@G9]-(?+60CT_-@_/S_KG-']W)W^R:Z.ND#H MOFY-O^^?G7:!T#W=G8808GM9Q&YSZIX,'QKR[X[;#XW:X M<=ZR.VY[L&O^Q<8D.]UIV_F^#0:]'5$:/H>2R:MDE$X5=^Y.%]M2/B >^Z24 M!EC$@XX?]YX'TOAIG;:^WS_?M,ZJ.VT[W[<'0'>ZT[;S73OU M#T\?&+#O#ML.48P;F\/[%2S>:W/X8S%1F1>14>Q[B?HN/KTV"I=_U.\(Y/=T M<_J[G#ZQ%['SAG0:>GD=KAB=UVL[Z_M'@@>'Y[K1U8=[NM&WF MFOJ#HP=JR>ZT[92<:T=U*,^*'>'*V,,:$/S,0K[]"_]L8_VPAQ[XT]R=HV>" M[&WAUF 5YT5'BK"GNW/4D<+N[=;X)\?=A;.GFS/H[XI,Y#G$8G]5A41@M^.* M-0K9WJW"3UN:_'Z?K-,3_[P+>[5/(_8'.Z$IW,UD__(]'9.:A*/3:T]=KYV< M^/VC3J^U4:\]$&O?Z;5.KSU]O=8_]$\WCN]T>FWW^W:QD]JO?=!KXD+K0>A/ MGLP0*=8L.>NBVJQ '\'*A&F)['V;=#;Z86_XL>8@S.G"%_;DVJ(G_AP5 M\+;1&L#%E_U7WN443GZ1>U&"$RRGB3<-YEZ2%MXXA?^$I?**U"/U$-6Z1#[Q MQ1F\\G[]X/VG]P(78ZJ"!.8R+N,7BVOPUR( @=1(2@>@.@VRFR@AP3W5"Q E MH4J*GP=GLRWB59?.]:P^U\$AM62Z54EI$9 [WP$:E7?@;7E *U^O%P4CE)D* MNX.YC\ 'SZV#T1QDQ ME!H>BG^MCR( A17P M[.EXE3@YA_WT+[1%LUF6?@.)*A1(U/&Q?WYXZ 6%]U:-%#Z/3>NCON\-#@=' M+-.U[PS\HQ7?&3@"*[=MOMB>V5-C4#YP3^.04%(SF!"LEQTX==.3VQK>DQ05 MB>Y$:UNB]9MS@!WIZ1\VB,]/_;Y_5\F$6J2W!&EH"BR M:%B298(#L2,K#WJ$';X^1C!V4/.Z"CXIYE$YGL*4A?@Q7F>^$8#1">UEL@8OCO]!O M+X[^HA>T(%I-YXV\K_@I?@I\W^!*@!MJ%,U@L^'&@4TNUM95 M^%#W_O#N8![FRG-WG6X:Y:EO:+ H&JA<@]3\2-W Y9O"@V%>L SC,J/"[YE* M5"$<2'I^K)'V4!8V-'G?I'F!<]I3TW>7EMN!5[?=1K)81JRKNB8L:RIFHH*0 MSHFV?(S-%R7F8R12/R' PCU_8$GE:9*H^(#JV51(+V=9_^G(.:OPY3P=%W*(/=^L%U9=!HG?+"_4"]T#_J MG:^M%P:],_>SM_!ZLGO@;Y9-@7$"[](D%S9WTU,N@- MGID:J?3P?FM[>'O="5HK%-+< 7T+Q^BD=[3V*>H[8OQC;M?3'W0L9#6/L:1] ML=[]+@J+B41MW6]Q0/GG0_N58)BG,1C "U_Y^]_84:HF'$ ^XF"6JY_U#Z_# M*)_%P?SG**%=IB^]ED,KKVLHNZ=CS'^V;^X=\MLE@"YOEC_WX$]_7?S],6B: MHZ/&/QWV^HV_7_:H/O@]Y\U?V?11,*JC\].5C[H'S/H=7!!__ULTO?'R;/2? M+_)9/CI ;ZL/__>_-X/>[[.;%UX0%__Y C[SOWW^=U6D!B>S;P_90/P>3NR' MJI.SFC99T+W]$U1F\/^N/UU[;SY^^/#N\YMWOG?UZYO:V5D!Z_BQO!L8:%+9 MC[Z7SN]-]N)"'!WN:-);(1NY?_,QP?T^S:9>__#@OTTNXC))2C!;/L'CTM!3 M8"R$)D[DZ;C2,JZ/:N;*_>\DLVMWHPZ&H+V_'@1CV.R?@_@NF.;TMT>/M#-4HYN/%S":N6,3'*WX)]&8HW 9OT/U_\6W0T/NN? MC\/ST_YY_S@,SB["T?GA.#@:G)\?#\_[Y_][!B8&75]P:[^!%\*9! ,L^'MM MU]MJ;+H=NR\K';L[V:ZDEY6NI-T9:SACP7T]75GT.4,]G#OG:O&3SO&33%YCDKK] M(L?TLD(Y\%)T^:N=QB,Y]CV:P);PXN(6['+<3"<; MSO$P@:.2T1R4C#P84R[RDB>PC;*!7X)O^C[N5,4*51$M4&S4=$/]NLLPT/#- ME;':)Y(4K?YR5) 6X20?WNZ5X(J3) Y 5>'%"(IJ#!JGX9T@J:AN\+5#L![& M46'N;;S/6:(+O(G)Z0"E5, S[H(,[ 15%+'"4Y'W0!X6G\/F""JX<@;*$I]G MO^.!5P,3R$817\9D=?"30?ME!+Y);Q)8_A!SF@'\FR:.#TJ;EA:6R]>?1(O" MYSPHIF YW8I)S8!]*#4>_7'UY M>]F=U^5K0SB_2.S+1%E=KS^&COBBX/E@5\+)'45L$M"I=6T$\[&E=K7Y!)S* MF 3^)H"C"6^+4SA3A!19N&+@>Z,@Y\BRO9]R,*]C. >+-Y8\C<$-*=W'/#'^ M&AR<1.$1)G@>?#B ^RU"V(C*X0.B63XV;=?2LH+'VL>%R<"4XQ+#(ZAR=BEA M6C=%TUF V!L&_5C3SO@U:CJ+T[E"!8EN1S)23KP>8]%I'L0DF".5%2@=HV!& MY^Q/MBQ51AZ03C*@&R=1_9YGB^\1/$EJG2 O9+O\X_+R$X*>\S(C/3P&5RH! M88Y1YX,@3'$P>Z@'[[V)QVD8L^2(_RQ+;Z-0\04!1WT4Q9&QXIWC#K=+ M33'\O-'L:^'25J0;SOJ]BZ/F/SU"NF'Y[X\/5V<;-AK4ZG3*FHF+QKJ2BW7" MSRP1CU,+40](-H>8_T<%F?=N(8Z\1NG'?E5^K#?;EQ&:H&D)CPCS5Y5)WEN, MM+J6<;]WN9(5^)[9KE^[U?+E&FQR GX4[3VL6WNX>;Z_3VZ+:[TWF_Q^E]$^ MB)NG#'?7Q@\B$&XSW\(#"(3;20S?QMUY M"$MM2XG$=Z<$WJX,?:9CC+K,8+!S^B.F#PC_^MRHQL_]TZ-^Q_RZI[MSZA\/ M=K0[S\=S*BS\Q, M.#[Q3PXW%;K.3'BDW3DZ\H\NVDT1WP*5\%E#(%XB!N+50Q$0S\R8> G7U>!T M(:G5V1&[WIB^?SC8D9'W?,R(JSK8Z9G9#2_/_-/3P_5/?VO6WWC[^]Q7P)FWS#K*WC*.L%TAPCX MWJ79[Z/9/P$SZ>B!?2M_Q/KL-Q*F.Q7/\U0<#?S!QI'N'9^*I\'%7B\_^D#C MWK<*K9T6Z38O4:50J_X1$(0H9/8W(;'LR=?\!Y6^^,O*PAI>](.J9'9>4'5/ M^0PO891S(E?V9+%L1O[25<]TU3-=]>7OJ=K<@XOCB>_.]Q0F M[DGJ?W_/?#5(^I"4_W>8)?LG:_T'=K+?TN6\#[V@'QFDT(G3TQ:G'V)LKG,9 MKO'][V^/O1=#>_*7U$-Q*NOBGEKL'C=-<;_5P<-P(_N#N.NDK572]B \1@<@ M?)!B]K[#F]@V>FK_1'/PP.*WG:"$]L%T?.1022>*G2BN]&):CYC[-4T."+0E MW%,SE7G7V ][WT!S.R6=-JL4V57BKN'K$)S?SU+>Q&Y>[2148_;XD<3F#V,N M]X42?$D3Y)T#[CJB6A8Y"#,-(RPS:H < MC";2#J/G+84V=GU,NSZF71_3KH]IK8]IO^MCVO4Q[?J8MJZ/Z>IJB=3[HPR2 M(AJSR4&,N-1@*J<>5)F"A')-H!<,RD'K6["R-X$IK9RANJXDXIQ'5'^;U# MQ(&X+H7[MRC7IC9WZI(VH.9C-'8]],:A/:_F,LDR]ZPKE.D*9;I"F2=8*&,# M,,$4&Q]WW6>ZPIBN,*;K/O/LZPNZ[C.=Z+94=)]!]QFNA-G?FV,K[-'MI1Y[ M$'OT_L#4GOCN/(@]>K]@7>W0"MOI,]'>:J0']9GH:L4>:W<>TF=BOVK%VJ$6 M.E[YCE?^"6W,4^&5WW>U\7""Z1;?20\@F.X,AD?:G(<13'<6P^8K?57/85/^ MW^(\Q[VSDXJH=[G%^N_ M?PGV^Y3U#T_]BZ.S[P[YW[L.^Y^SZJ2Y]=)\?NJ?GG\?[?O6A'EK_&X/,">6 M\UJX,]T5Y]N&HWOR%_8UE_24.5>B85:P+%2EUBT)ER,PMU:]NXOO/RMG[9<@ MCT;/S"$[ A5^W'40W]_=Z?W3F'S^4F7Y]7OG#^PCL <:OQ.U=HG:CJ^O'^.V'NZY"/W:4 Y;)32Y5X4_73=*!/&A MG,2=B[OMO3GLG;?;P6V';OA!MMP3J3EZV-7;]IHCFO6@=[&I+NR*Y?9K"Y^K MX![O70.T?0J3;(/7?P=#>Q:W*9'XJAE1V+M1BG]\SUJC-) LUV!_&7G#*!^5>2ZL+VF9>9G*RUCWLDCA=B=.F-SP MD,]Q&=2J11LYB[;.-_K>""8_1'K@DL@CO$]!5GA75[YW5:BI=^9[6+\[.'S] M(4B"&X4."17TGKW.O;=V @A2OTR">)Y'5'3Z/DJ"9!0%,9)EA]09@C[S668( M'_EHYD=OZ+_VB(I4\<8G<_,:85__K&8I# T>M$C0?N_"-# V1^%_OKB?]_NB M_^+AIRH(U,D/$:+F,_3/Z(\R@L6=T]*^X:XEN,0@2R.5M^Q(7!;->W?DT]F8 M96#T1C.8H$P/92@V*W"GL%N0)D&A'Q3\[3:(N>4._#*?@/P<% J$QR5)*5+4 M6GO7/]Z9[W$<;H M/A;)!"&,U]_EO@W:0P43C#Q%.>W2H[ M?5\S=]O)\U"GP;=H"NNMG0-IG80/IX=.HP3_CC/-HOPK3F$:P&K@(45N&9[" M)BN'4T2*&9S>!'8RGLN8X!=YD97T*1QO!!(' N--TT3!?X/L*RSKN"3&86RZ M@]3P,!3:TE!1*YF<)X5];E1&BF06@,)H(_-Z7DZGV.D):_%'171+X@H[(NH. M]PFM@8";^,#_\.IBEQ_74!]HYC%/>^(USOB]8YX_8>VH=G!;"O< MZQW#^N:S[1C6GV*HTY"LT_4GU@ZUQQ.7""P8N4@CM'_N')IIC(K>.6-.7C]_8JAO>7@_1/_XJR]I9M/?'=>'O7]TZ/^^KKA1T+Q6I=JQ-/^ M!D_[>XJD4G+MH_$D+Q>/>'M"RU$RRE2 +4V3];QEBB/;@'R81;-VKM$4GX'MYU51Q!2=IH2E?3QUJ: /QU$PC&)ZE4]9CU"2?T5J M!ALZ:,;E\?RN'WW7C[[K1]_UHZ_UHQ_L:-)=/_JN'_W3ZD>_]S;:E8G/M-I& M@XTV-EJR3@RJ;J.5U(1]6.;P^!S,K-$?990+I$KP!&O!(O9^P]\;O[O5&\ZF M=*-)OCK&T+SQ14V&K/S@=(D837##=KV2D@[*$SOW0(]J+ GVM MP)&9*T'B0&Z:<:,,P:35H#YZ0P57S=-'SAV?],!V_"%>_D7O\&3?@'/=F-H] MIN.M81X'9^T$/7X*YJS,WH+!!T8BN_4=YO&>1.<30??]$WVZ+^ R_&V8_?7O M?;)O.W#DVLO7/SBB)5N>H.W6;('K^^#D$=?LB9_?#RE8F>;\/N;"/HWU^X+E M5]\';Q9XW%[<@NMVZ37)TYCB.HZ[@WG345SB5+R(N@&A$PZ[IO*B SL_-\#H ML7_1WQ2'LS=0Y]K![*#.STERS_W3XWXGN9WDMDYR^_[1X+B3W$YR6R>Y&].! M=F*[7QOX/,6V#U;NR=[9"FT(NJZYP)\$'>#FSM:H:&@A-!Y$Z>1HM1;-VM:;>F>[VF1R?^X>EJ5^C1ZPU;&.U= MC'%W9NUS,&LO_..-VYUW'ME^;>+S%-W!A=\_W91EOQ/=_=K$YRFZ7?2VD]QV M2FX7O>W$MH5B>W+H'_8W)F@% M/Z<)/""!CP>C(LUH17X^/:JMW,%VQ6+ETE'QTZDY2X\_A.K: M](][U&-TE.;7",5)$%A:)R0^%DQZ_? M!,Q6KV8%L=6GX]5;"Z=8_/ M)J)&$_IC$,?=V=O:IL YF\$&T%G!8$A* MR? !IKY"^I_DLVK8-ORDL)([@GJ-I(!N#O] UQ7?[ MI/BV)_!#&9)M<37)_++$/"C38Z22!, M80J.3L&'&3V:%.8WE/GE-+_ F5]%L/#N41@[\'=CO)1 MG")7"#C:<-9!A.@OH1H6/>]2R/F,1L&">1Q,X,V"K)BC!.*0P$,'P4;>/5.B M3T_)YR!"<->-N(BEA<+T/LW@GXGWILPRT*%S[]TW86_! W:5C&,ZGMYG5'EO MF"*Q92(&4P0Y 54PY:EDZB;(J+@(-8(:C]6(Z!S'LA0CO11*+P4Y"<(/ZQ_O=;/NIT#5\.T[+P/K!/AW/4KX%]+B;1*OZ4 M7MOH<]Z6F1;FF.^Y3#'["RE+?8+IPL1-QP_/P(R"$9#.9>4+=KGMAJ8/15(Q M5+01) H;;]U1P7:0?0TP5PI8AGAV%G'C]KQ MHW;\J*ON\8X?U5V(HR;:SXX?]KXUPM"/O_3*, MT/L?#&[4OIOK #*(J;_";3@W7D/CK' ,U^5,8AGT;%,$&;L)#^VF#(ENC MH78UH'MR7 ]VXV]V=,S$*>LQWF'QOP]WTAZ^I$?W+.GI'H5OP5XK*>1NM8W)T^'OJ"5NN9%UK<&W0_.+8;;'[NW]&T?WP&NE<"#& MEEGRZ//D-_*OG48@FG6&(D#PC/]*[Q18A;XWI"X>*6O&)*#(,SG8%&#!B/.M MBO4:+(N0DGXG$(TC\)JGW5&O2]&[;L%[]' >%TA'S1 M5N#@]W>3:#192'=G_&'X;L^[7*$H?08ZP4&!_P\OZA_^1=]S!1;YL?P807(N MO/I]UR G40MW\3?WTL8#[TWFLY33@K 6,=^"S7%UY_LF@VYV&T:%:+AY<+@28C5I5BEU6I,N*=%F1+BNR=E;DN,N*[$%6 MI']XT:5%GFU:9-]CNN=+0[H;1-#7-/%V-$^Z#+B1#OBS5\FH)],8YA&XTAFZ M2/=F1-:?8BLLI?.+WOGAQ0\Q;\YZ%Q>K#:5M6C<_5,W=[R+ 2C^2GOO>L:RO MZ/K] >91,=M%,8"KA,L-,:;]6=U@Q!T;J7TJAW$TPG26J0DF]F\5&IGI5'7GLAWG$K?V^+ [E^T\E\I;$]/%[Q%WT)W& M=IQ&W-#C07<:VWD:3U_\?7T0>'/CU8=R:6$$%?DD1 8H8Z2A3Q+^Z.)/=C'@1X+ N'>P.ZDJ6P.)G44), M(@QX_8%PC%UBB(,RC*C #*:$A;M3&,N<",V6EFEPT+(9L9*[B)67O$[TR%>U M,B=S/='7X(WJ&T01@]4N'D_#S[".T3Z260+5ICA^RD39U.A/]3 MY2?$7VUAQ;%$*:7"+<$G6HXX_5K"G=W(H,X3RO' MDO<4)I.%=/X,/R15$(*RS_6BRD6FM]*YT#YB'1.^1ZZ'E_]*(A/FS%]Y+S^] MN?SXRRO?%04Y0[DN/&/NR"R-O12>YHA21AAR+2[1O+;E&BX/F8W01+]*:=4A.8+V.@AF.;\K3PGW:-Y0'EK/;G@ MU# K$4LY.*1]/<;*$= "7'WBET6@4)RJ(K36@(R6H3(SU)ZVMC[P9JP=G6MAC&9^9AT!HUE)&S(AM*5MI0+\ M(=H;UHN@;\@5JVD7M?I=HK7INAJK$*\K)"XI,Z[(C8.[W-RMED;$RTI-'0\C M+>/JX;VVWZ<"6UVL9<^R>23-:?='Y[[K#W89Z;A5Z&SB^A<@S='[0ATJ[%]E M PT7/O:MT"3*:$KPDN.KB!1\B.6C'C(CIPEM00#:-:-7!T0+'#%^:2'?#YP9VA^Z!'O0^;"9F_H6 M(&=&93$#H\+F)AKE'_Z2PRF6!V M-+=!C-7D^DU-9J4NP0S=ABEHXT13JIV=!J'"V]DJ09])M\%4A_^MO0(O/C3B MQ;8/7#M]C9G4JWZ=@Z093 )7O(?F>G+\C]UKB@TOV3>H![&J^9(.\H< #*!L MYY.XEZ!FI(?-^F=*PZ9.\&42C=CQ5N!"X049Z#^#:YW3!<;]>)3A=A'WB9^U MKL2(7@SRZFO3K'[S5?XLMQV_:F0L3KYN@N)G[V7_E3C&N=2*\Q%%AFOGA!HF M"J.DY,EK:%9XU\O!*RS<3^-;N3*4D&Z#*PB7(3CBQ/=J""+ "*5Z<8PAQ.J; M]WL9WLBYH>TP4Y0S%RS9H3#%QBU(QQTSOPT58*,=[1PB;?^NH6*+X*M*B$$, MM&V*]&&:UI]IOWU4'\[H1%4T#XXD1O,5D6,&EL8L8.J9VM :'X"Z(''5W>*V MI4+6$!5ZE]?FZZDVA-@-;TSSB;RDR[-R.S*//SPU=#V47"B,]*]BTUT'0U7I MN+B#?=O#];AG]K3%)7ET(-%,T+?V>:Q$#YR%RV6]X+)$-17>OW!@:!C>:*!9PUU'3^:C @%MR], MD#3AK1A[^D(/\;X?E[$'[NX*OH,]W6:P#]"&*MA5IS7^H6+/6JQ1L:#1I]4P M_P$>IE4P74'NE>.8LK3;.#@K(HXLX)"P#=;J86'3A=E-!J887QTJF02&TI$" ME-_ $T2Y6_D<7Q1?J.!#4Z0(1_LXD=7))T1_,JPLX;V4&)3\[) M';*E0[9T MR!:N@.R0+5M"MG08E5T/Y3$Q*OMD>'VA+B)Q3"1<)GS.Y'IS-Q*&,4J.IXDA M%(896T)@Q"XQK,"JDS"2&'5@YB"3%SGD8+C*;R5-"^]?2,J,0%4$FEG62<3D M+@/MJLQ-L]E%\\K)OXZ<(-^RA^M8F(2NP?P'+S:(=:?3>]^%UF6^VM:C1,,Z MIIYYGH\=V=!8);I:-I$;+5&R4S7>0.P_$TNH&M*\913JQ-BAEP<8D7":(J[A MTYBNOWKK]6\XTIU5#?E'-9-[R$?..7^>&;$S5D74'1P/G+:_#;.__KW[8_?'[H_='Y_+'^^+4FSG:UV(L@M1 M=B'*+D19"U&>=2'*+D39A2@?&J+LRN:ZLKGG6#:W4%J!I2E.[=QGC?+?^1PW M*IU;HQ3N/VJU<(]05K-?536+>_^\RFJ:2_PT7LKV+5I5Q&>2-EU5UK,3G[W7 MB+LO7;RG8'FS0M=U2I$E@_/4JI%_< 5@ND[YUI[+]Q=7=D8"4OQR]<[[;_AH M$7WS_@LV&P7VE][_[6D J]T86_F!+;4X!4[P?2HX657P+()/.@= M>2J 63KG,2,68*=._L+GQ!$ [DO);2E7?4Y:6CJX@74K>IK/.[Y0.^]TJ):< M)J<>J):YOV<5ZF]%E6@V'.;HP!ODHQL]>]E^[?SL//F2V!4%K0PMEW+66-&T MM#E70=IL3_]D9I5>0,(@)+" MNMB;[N9%5&7^,BLS*U]R%IB_Q'G;I,2W@GK+%_[*NM_]K_MM:MGO)N*,I0V9 MR;3+'+R-CYU$J/DVN ;A"5')H/%R:H(KG3B!B8\6YS-DDU5_9]8?I( H(TS, M:,9J:N.BVO 0JVK/&8##29+HOCK@PJ:J MZ$"">2/%WOCHH;)(J ,Y/C+C4NE"AS&<'@L/F6&GWC&7F $\$Y'6@N9)=0T"!:O(HK4X M6X&'<7B ^C'8S)D*[XOFM8,6(Q[,;Y66_<#P.=2_P/?<0NO&F@%G@VP$*V,: M<^+&5RJ+M*0*[LX*>J;",B5WD),(?#C0 92'&S$[)MO,BU=#A #@#-5Q8I- M510Q+_8^6\2V8#P1RZ9ROL7IXDR,,Q=SK_YGAP/"*[W%3! MJR5D'$>!8S&\8!#1F=@RUW$$%0FO$-YZ;L?!96GO>SJS3+*3278RR4XF MV2U)LC-EDETC.MR;=72XI_$E,C5O[U/S=C40OD '*J.K<^7NV^>[R_/+T>WE MQ5WI9/]=;^+L^NKN^NOE^>C^XESY//HZNCJ[4.[^?G%QOWSM:UC%>V',]+73 M0:?XK1T8,\M?-]IOVS*E%O6VL;:F6=3&,TL\)_G88)W#392W+CO>MGIH%Q]@ MV:,I@?@6Q\Z]PQ8_4(C5N"^6BS /VA5QZ&4G)P\>V&0/XE-XU4*[N+0_6 MVO+H[BY[ I81%;'7C7A/IN5N6+](A[R5AW3X[[]HO?:G*G185U2.CHZEA4CH MX)+GT Y$J'C+9Z+G+8_65SEU]IS1&^ZVM, +6OZ$?$Q\L;XQT4*CE%T M9@4!Y@+^TW)GK(51N&<+ \P_HH_>[/ED[%-/?D!]$)MFS&>0$LC)Z+SL*$!'HY$A3*_5Y+QXK3@\AY#]2\3(E95ACT MUK#;4SO=0559> .3VS@KUC&DCQX_*[1K'?CI 'XTU=#TAN#G:%R+43P4A%() M7_!:92-%NJX!M=>"L$*1QK2\34CY2^"'H8ANE!4) T2BK0+X&V)>U!G,.WHD MK5"I]2*IVQH:NMIM-\61J]-0U;M-5J[8()S23#$!Q@X8UIBX/M:]')>U^J%. M+1L3]8L?G/NSAV@R<_/RLJ&H]%K#CMK1\SHW=Q M[_TQ5:=5:^R95:LJ'HNJF+;KW2[NA^QLU>B]8M&&DF*"H=)33:,NDW?M"^&F M&\/'BKW29O+FV!N EAZH1J?;>.P=39SWG$T8C3 MCFZ[->SIJM&N?-/FX6>%EJT#/UIKV-75?K>R=FV@)=QH'7I-W3)6)%8= M?3ANA08E(HZ(AAOB7\?+8L"_V9 0G SF[DY_5D=/A]#3T2K?KLH ;CD4W/L1 M]DQ8+SUU#3OB6/VX53&$*L)AM(9&6U,-H_+U1MG*E:9;K<>*ME51@RIHZ[:& M'5U73]BRL4(3QS2]<2TO&GGC MBYBL5ZRTJ.!=6D]M&TW)CY0V[^YT;)TXPONSKFHTQGUC19B#2 M\ZDXTB+=>]"LT)B;@@;+O 9]539'F/CF@_5%8 M"BN4Y1=L^LZ^.B]LG%*6A\#*^V(]O,=J]]6.45?X2QJ=#8+2"A5:+Y0ZK:%I MJIUN4]R70S<[U\H$V$&7GMJ_?Z3Y<' L^MZ)N)N4QV,=R7%E59B!#<_@,.PW M1(7)P_"=LN+* J<+9E1?-?2F6%%'DPZ7J% ^W%6)K!\R.:X>#7I)%+VW?F0L MPASP>UC47%>*O0R_- @E:ZK+M5#2AW-5KWRH-BO>TGS=F'40I'%9<][PE>_9 M&V4<]4RP%51-KQRSEC9F\_"S?N;PYO@9@#)5-?,0*R_V('>XV+C<8KWGWGI]^'4FHI3E*<2B5_EQ4GK37L]75U4#WK M>U^JPQL\<.'KY>CSY=?+^\N+.SY$Z?[Z[!]_O_YZ?G%[)P:_*A?_[]OE_;]J MFE\"3ILR]F=X(UUJI,>VVK:76=JAWVK%HP/BL=O.&ZVUY.56@QF9M.R96J]% M72@K.XK[>Y(7[?!@SNLUVPO=<%1L5K75US%3VBAHZ[:W,10I#H,B^D>:CRXG'#H^'B>>KZKXS=XFQU-OZ: M6H ;B@56DFMJUVQ*H9F\G]R=8JT=3%@HWE;UVOK)-20NL#\ZEOU %7MLG9;K M-;V1D-5%H=<:FFJ[MHX)#;"^)8;6MU?KP5"?/+AN73U>I,5:-F$N8"_,F\GA M(!O/Z(,/XV-^W0J%N#13J+J70H;?TN(M\^X\GWP6^A/]#@SVC5]G38U,&CIV7^,'B M^R?XX8^:3JA^!_[>!'&D-$1.J\I?WY*M&Q;],(N[SZDI] *7Z%X'1C M!=?!782EG?^TW!E+GRK.Q78B>+VW97W9>KK;6D^_-6R?MMOY4SKW@C*U N4% M'_=)6;J%$'\FK$9-6FHXFD5/?@!\'Z]G>J1;,M\@:?)OLKWK611&8"V 1.>WH+7;I6F\"096+$+;R2(NPW"&3,[_ MOKX3H"W_?;"QUP#0^A!SZ)?(1O13RB>'(^AZ&?C<8.9UEJ6DCM>/96EMHVG! M+!D.W>6T"I==9QNN)I& MV*29M58ONTR49*LV#.&"^Y&["4.SW5U %A1K[_U4[X4&7Y M'5J^UC5A^04P$LS(V,RJ B],&;S_PMS7"A;T4236K"Q)2%@I3*"-UFX_Q+]#/R,P M(AY44O6_91EO=C+5M[8^S=[I:FI[D,?WLF/J&,,Y'VH\C0K85^"8K[P@US2< MO*6;JCG()PO_)(,Z^XR@%6=6;0@:- A!1U.(,8+U(HDM5YE:SOC$\13;FCJ1 MY#J:>HQ;%EGPXEAA5N#!RF7+NDW5;$S)"T'(D6W/GF?4D/R<31S; M*5NCI.DZ>"#=@=HVFC+_4QJRNU.S6\ 39@T/.JJNRT[,NS9K4^8I/I7 X121 M@#TQ+W1>F/((K%8^N'X8YEP+:9>LW_(^IC$5.IUE*FUAKU>7S7Z=1F_[U].5Y-9?*R86V$P MUX"YOHAK]2LWT=\ZYNHTG8TFF\ZYJF?*9UE?FZ]9^<@IFYO)+*?/5Z3,P6B? M]0O'1]ZX!EV$O8[TCFH6Y*=5*O&MQ,YW\F.D#$L9WFU!?CTR/ ;MJ^K@^KC M\]Y9ALG:^#G"L<5Q;DLF_>G9"AX=CWZW-R\_-@/R!W4#PUP%#+V-I\6.JIX?P<,C7P&_/F0(#:(0!>4FCF=YMD-^(KQ Y=VG\\D\F0V+WS'0 MZYWZ(5V'?0QP^JCSPCY]=\;1TT>MC8O(?DMPK9U^Q7J %Q$TY=Z_6CX]'^Z4N?!#O$S^$:%VTY9!!_._WETS;_=6%3 MBE\6;Y_"6S_G7S?T4[W3*7RK?:H5OK[L49I^VC:+OU+V4;"JCME[\U$KK.>2 M^8")^B/..<^/2AC8_]L*IZ%]HK?UC@;_^_>C?OK[]+&E6"[JC^?'?VO\W_.0 MTKO3'YLP$+^'&ZM5SOH+ N($:!_[N[N5/.KG_]]>+V[$)5+J_.3E>5S,?3]\O<" J6OOD'W@THF)51IXW S5Z M X_SQPKSQJ!=SYG-GA]8H'0T54&)*"!4P1&3_2_N'(]5IS/I:^9D;/8T4S/& M5G\PMLWVQ.KHIFD\F)KY;THG$-]Z"E**/[*3AX!9?YQ8$X#(1\O];KV&*#/9 MDPS$+JOQ:N$?VEL)J&,9;'N)I31VJM$A-LA.=VH MC*[.E;MOG^\NSR]'MY<7=TL-C<9O[NSZZN[ZZ^7YZ/X"MG0/?_QZ<75_IUQ_ MP3W?W%[\_>+J[O*?%[COZU\OEFYT#1-R+RRBKGFJ&?I[643+7S?:;QM$^[\H MXST,OJU:&<4G;K'CF.Q)ZZZS*2Y43=K6OY@5*!LPBJ[7=7IZV#(I4MR MK4,N.L.!7%H955)7KXSM[#EGFRW+[:7);;F4WC6#C,V.EZ])@TT#Y@T-B:^Y MZS(Q<6U5&BJ!Z$O@/Q>-&KOX8;LS),LH#!G\;[Q!3E2'RDEZZD"K:X#=(5QF M2?$["O'KO;_X8?5-MZV:U3.MI/@U"XA2_%:)7__]Q0^[]YA=5>_G>]\T3?QV MU%_C7=%SYH<1AJ"#)=;SOA8P[=YT1$I>3X0(E18++%8R=;4M)VL>)'96V#W5 ML&/@*)8.8$<63AXB=E8B!H=HU]F+HD!QPU8A3O K:L/W:H*^:QQ$4E&BK M?NY709N)K38Z:K>@U5_3T'8,3OCUE&$FF?>HL!]3YH6[F:16LZ%^+"L[*@/U M#C0'+T%\MH(_6)0=X;+G'3MV;XW>,=?%Z*DW_C4FY@67]](*G+HUZNJ@4U<4 M=<^,@@,'T@I#LSX@&6T 4EM3^WW9!^80@;3"AJP12%IK:.)(@[IJ_QIB-^[' M,7W+0F8%]A.=U&/VPEQ_BD5]\C9G\T0@3E$0C?.4GIL*AXXI/VJO6UDX9("^ M@5!:F=12)Y0ZF+ZB]@LFWT@H[3^45B9HU DEFG.CMJO/,Y%7/QM<_3"/!99+ M)[8U?G8\)XP"JJB7#O;&USVC9A\7\2;7_F#OI M>)'E/3I8KVV%(8MD$N7&)WB6M->3RX2P(Z)K:3'!L5@X:*-RE%PZ2PW$THH# MO&8LT61CM=]KBK+'7IUD75]*;HI3H][W6:H[\K+'B+77_]G N9 MI+3Q>9YDM@A#M[RH:*VAWN^KW4'E)M4R,>Y ,+?BW*^..9Q$I??4GM[\]#B) MN4;8!]4Q1].J3+6K-5_/'4-*)I]]HTP"_SDV%7RODF-_M**SKHF0CALJ+3Q& M:P@V@E[;I>C[Z^N:O+:C!=VZ-D(%T'4!=)JJF94SYR3H#@1TZQH)%4#7:PV[ M7;5M-G],U#'T'*.9>8K#;84/(I#PDZIXK%(YYX&+R0J#X,KW_'E)V?"6K-MO M#4VUHS7EDDS>N.[PA'\#17F@X#V1(3/@]P4FI4:AY@[E):-0ZU,[>%.D=@LR MX?=UZ&FCSV#AJ3\PX!*+S^+(^E&ME]'1VK K#N?4=(V[A#G>#,AQG<1(/A,C M^.?ND0T7/Z+ G(ZGA6\7D;L.011PQ\-?*H^N<3VN2PL7<7<:\/QWE6[O>:/ MKY0.6"-L@B:!5Z/H04>OJR1$@G??P;LB>M D\/)ZIF[UUCC[$H78C\3$R\3X MB9,:9!2BFJ$#8B2\@,_,8QNT6NG1O9[:[U3NZRB]RP:":"V#HSJ(#)['.I"U M X<(HK4._NH@PFHF=7!H!?J-/I"O6"0B$MNQB ZM+WNYS1^.!EAU(\*BS:\, M>UAXUE7-X_ TI5Q)N5K_CJB27/7I*E[K2+F242ZO4^',/'1:>T 2B M.PW8$SB;S@O+I3=5Z4W[WGU>&_?]HXI/?_$#^*>GV+,@8)[]JD0!/,WEA?36 M^/=9&&$_HTJ5> <>*UJ53(_R>Y85W\RU$:?^F2#^/=*>_^+(&]^GG!@EC. 7 M2AM,^>H-6L..VJFM9D_&*QN54I5SJY:D5#4$C?UV:ZBK>D'GG9TG9$D@ODMN MW]: F,>:UAIVM2-,_1L[+_&SQ2-.\/,?-9V\H?> TC;0<3_G@ M KM_4@!3CO?"A*U!R?K8Q0=OS>&/O^[@-$X7]G??15+] LM#+%Y[=PR,(R=R M6#@*G!#>.H=_>H\W0 %_O 1R>FO8*[C64G^)NV+1]603DP/GZJF#3EVU M@0V( $L0OI>J3$&8QUD/@Z5UI>%)E!V4=;L-O/6QJZUOWM8$M5U7ES;0 MO+UEMFN%H3.!]<:M*#^@H?N3@H;N@IV+72I]A5F!!VO/6[VE@%DA"+6XZ-2K MPJSFT?79)?AC.'7J>I)B= D637"U>H4F5;GM;*C.Z][. .^3BW9#IN^NW>(: M=V:VP4')AP)KLWR/)-BQ:ZG;U/8U-;1]>X,JIX0,MS41@;M6E&\8(J:.*=$% MZE)"K&D0VXN3ZRVH40E'4U+O:^VT/FCXA;%HU5HE*4%6'&[%HHCEY0;[(H., M15'@/,PBZ\%E]_Z-%8"TE;8;,$*J]CJRG/N0\;GSB^9M()5'=XM\3PG2HP-I M'3;+6B#-XQ"COP5-Y!N$PF/H G=68)ELIUOOH>7/E]M\LW5&C897@9+8.!B# MDZ(&JM&M:X;=^Q]8;WC24LJDE*T=KJI3RDQJB*+UZXH22"EK"-ZDE%6L!:M3 MR@94&:;U*^<[[&I$0K7*L)IJ3K91?B67MH4BGD8KPK25A3)E .PG<$HWJ@2K MJ7+OX+Y_5"-4/UNA8U?)&3HTZZ%HB_MK(]RPX X5Q)M^K[YH*ER(Y*3XVP22 MQ YH)W; ,WF9#U*Y!\Z\GOU(!]3:TZ[==V02>1+Y&\=^?UZD(_Y M/J>U];!JR+7&?AAKYXX[B]BX2J;+H8ENT18/3W3+F6L")D7"BQE4I_W*TZZ; MD[(GL7_HV"]GL+V!?>S=>VH<4/MGB?U#QWXYD^T-['?):*LK7'](07GY_2., MH?]&_V!CQ8)568\,BGS*= :)HA(]&7*7(?J]FSP\LN)[0(1A>SZ(PLCRDD(AAE+O<'O1:PTY/ M[1F5O:3F!/;M/Q/JA^,RSQU4Q\ M;7:\UX8OC>.K5[F?79VAO)^I/BYN&9/IT/1L!8^.1[F;O7D:^P><7S(WAXY"O1$PLQ&.11!K*%$:*)XUF>[5@N+!)> MH!9.I_,]OWH>+1_^M(GP0[Q<[C& M!;X2@_C;Z2^?MOFO"S-._+)X^Q3>^CG_NJ&?ZIU.X5OM4ZWP]66/TO33MEG\ ME;*/@E5US-Z;CUIAL%;H6@:*YOE1"0,;-,LTM$&6]8X&__OWHW[Z^Q0T@>6B M&GA^_+?&_ST/*;T[_;$) _%[N+%:Y:R_(&?]G&;M F(4^+^[FSOE[/K77R]N MSRY4Y?+J;$%VW@B?UM A[OT5#A$"&YZ_RZ9)>=>]Y]7,%R,FGA6M??(//.%0 ML2HCSYN!&N6M#17FC4&[GC.;X0FI=#1508DH(%3!$9/]+^X<3T>G,^EKYF1L M]C13,\96?S"VS?;$ZNBF:3R8FOEO33=:\;>>@I3BC^SD(6#6'R?6!"#RT7*_ M6Z\ARDSV) .QRRKW9:I\?>)/)ML"' <-&!$^GT?^$8Y]%N"G8#564Y:B/ 5H M4?UE-=_ZK>$]'7K^1,%QZWPRB35C^XO8.7W\,>O%U?W=\KU%_C7]=D_ M_G[]]?SB]NY_E(O_]^WR_E]+][,&B_;"W-$[IX-V\5ME;93^:<\H9S@M?[UC MO&WLR#7)-3/$,UC'$.6Z>3=!G/6, MS3.>OG$7^?8?:R1F'"()[L&"#6?!*R>"4I4*\+' _[X8]]LKBHQ@K6AS6N[? M'H*?AS>6,SYQ//K[F35U(GA=$NF611:\.":RQ F%$CV 'MN>/<]'_\-1]9^9$[W.$6E) JB^QK'U MKNF%ZQ'C R C>O)G\(AQJ"KLA\VPJ07%_M<:VKIN-XQF8X)?=JRC2U9O>%6F MX6%0;/3LS[RH!G5R6&3A0)(X*HFC.D[QW7QL1RGGP-9M\V-9QJ]K>3:#LV Q MWMVNDBRT'YU>5X>)-[B%-[.W\)=77PJ:78%#2+;(AG?N[?3.7:>D.L/LJWKU MM$W95ZY1N#NPMG(5A:V@JYSY=KY+UMSGAGY1UDH'L^Z.07*D^EY+?0]6J.\X MF$7H$KIJ^Y2#?$':S;$+U+B)?,2NZUAKZOJ M!1.C2P^"DO+5#*@=I7R5:A[?+F\;E10KK$4<=%2CMGQ?*5S-P)D4KE7"M:)0 MJ ;AZK>&*%NU3923LM4,F!VE;)6;8*OOSC(TT0-K%_2>D8:AE*_]D:]2XM79 M^MF%$QCTMMJOK:=3@R:/56SN\F[7/,36DP<+NP=A=1GS0DIZ/Y1>+^L)RG__ MQ=0U_9/L9B&Y([DCN2.Y([G3/ /->-M 2R?5A_=^FD>,*<27GD@>I@LI.NS/ M,F?]+0-[+G0B=L>"%\=FO-KQEMG^HT=/^:?ESEA9U8&J?(M88I\ETW:'L_YYQGHSMA. /W?#H+PIGE1=CT):2" M*>N[%8R7)QGO6>^CK63M:-T5:3L4 +DD"I_/ J %%QI.^GBJS+R8E4WHT?36 ML&?HJE%;)F8#8L='BK(BP[R[1N0TCS#2QX]B!9NYRS5QYZ&>]\Z,. M/Z/@XGGJ^J^,B1C%=!;83\!,9>K"4I %+XN=%8XW.+B-F$5,?_K0C:#^#1"_ M="&2UFL-NUVUKSCT/*.0')'[F82S0U$DWE"J97C)6<@Q+95S&2SOPP^I5%3_Z:F$H-*QUS1=NJTDWIQC\F@2$ZY8I#B>[3^SX\H^ MD*%3R1W)'3::)A<'\TE^Q<_@']ZBCT+ N;9KTH4P,-<*J-0K+2[Q''= MN,N(G>2.Y([DCN2.Y([DCN2.Y$[SN5,NWR4W]F_)@ :C3XW&3WU!$#@M'@1/"6]D2 MX"L674^6N#_]UE!KY^?-KN_^2*@U$&I5_>QM(,UL"-*.YC;[EMFN%8;.!!9# MB &ONL#CAK]'OL*LP(/=5?>_]S:0)0/:DCN2.Y([DCN2.Y([DCN2.\WGSLYO MN1=MZO22\4O@/X^NSRZ_^,$=N#[7D]11>LLKPHY!@WPQJ\3;WN.MCKONNN'6 M:3<);C5=>3?6 ?]LN99G,_"ISYG-GA]8H'0T5=';NE;E:OO!#\8L.(%M?42J MA[[KC!7IL?3]2P*(\M#LI1M\]316L-.3VVW!ZK> MK:L68SWFO5,$=8O(*Q+,]P3>7[?#N+49UBQI*S*7!FNT&WWR72!*>/&?F1.] M%ITW.HB0>0RB(Q7X6@I<;Y=ITR>TN7A22>V-1^V M\BYU 3@O9V]X'T5JO%RY:L=H#O"U0/CL&.J;5/Z]5*X]EZXRIF&G=V9AIA= MJ!J&M RE?.VS?)42KW5FJ%63*IS!8QI@&0X:?W@=3;(EL?7D 89/JR MS*&4M]>2.Y([DCN2.Y([C3#0NF\;:&F.37COCX 2^$3+O;&<\:5W9DV=R'+I M2HH.^[/,67_+P)X+G8C=L>#%L1FOB;EEMO_HT5-H"$)I]W&Y*V M(]$H=87DCN3.NVOR%6/:FJ;(C7;#%/G1M!SB&22*0\.1E>DL"&>6%RF1K] M7<7Z;@7CS;KZ%I!DSP5M2>+.JOF:2\9/<]+3?S\OBEG9E!Y#P\;8;=70F](9 M6U:MR_85DCN2.Y([1\>=.D,.2\Y.LC*K')T9VU.'HU,=M.O*)9+PDL(ON2.Y MTTCNU!A#V(%F[C1+,Q_-C?W%\]3U7QD3,8#I++"?@)G*U(6E( M>G.CUN*[O M=QH3B.E/'[H1U+\!XII:V/[NM84_M]7OR[-P/A$GYE]R1W&ET9* ^Y=QKEG(^FHR!6Q;' T)L MAFQ3(PH>*3BN-('EI64;Q@3F&GSP2,#(_L_,"=BXM-_?QP9-FMHW\ADULH%] MTY D8^9-YDY9,>_O4,S-Y6(NT=1(-)4K2,YURGP#2F1?Q4@Z\\/H5Q8]^6MB M*F-8#;"[AJIK\N1H/IKDR2&Y([DCN7-XW"EU3JX(2&SCF.RVFW-,'DUBPA6+ M%(=:@!]7]H$,G4KN2.Y([DCN2.Y([DCN;)!0D1OQ,V\B@V65SE8I;0MKK6&W MJVH=HR&7<1(Z4K#WF#LUNK[5Y%IOF%P?S27[%S^ ?WJ*/0L"YMFO2A3 PUP^ MK-A*NS<%H\ ) MX:ULV? 5BZXGY!/EW1XGTQO%+X#^/KL\NO_C!'?@]UY/42WK+)<+A];T&%+Y*B.VPBGJG M"#,;@K":KK,;ZV9_MES+LQEXSN?,9L\/+% ZFJKH;5VOT7_IS/JF)?I_G0]B\+(\I L91M =7$";D_5NJ;: M-NIJA;@>\]XI1+I%Y!4)YGL"[Z_;8=S:#&N6M!4<6/.BMJ01Z9/O E'"B__, MG.BUX*CIX>S1RB-&]D%TI )?3X%K91KX"6TNGE1.>_S-Y)LB]1XN?S8G@[NA&ZJYD"OX%)("6L4V(Y2PDH)F%[>/"HI M5SBAK0_^AU;7?"DI7,W F12N5<+5V;IP&7!H#3JJKM>5?"*%JQDX.TKA*F<; M&KNS#;O@_ZN&EAW\$E, G6NZ- MY8POO3-KZD262U=2=-B?9<[Z6P;V7.A$[(X%+X[->/G++;/]1X^>0N,12IM[ M_=;0T-5!7XZAVA,T2ETAN2.YLWU-GKOC;+@B-QNFR(^FG1#/(%$<&INL3&=! M.+.\2(E\A4;K*M9W*QAOUN_W\ J&ER3NK!JPNV0P-2<]_??SHIB53ND9M(;= M@:EV>DVI&)9EZ74:YA5&GR\#6$X)]]NMH43/GJ!'-C:1W)'<>?^0R"::MYQM MW-=:PX%J=BN;QA)>4O@E=R1WFLR=&F,<.]#,.M?,=17 R8R"-8,6%\]3UW]E M3,0HIK/ ?@)F*E,7EH(L>'&BU^-*+]AIS"*F/WWH1E#_!HA?NA2IWVD->QVU M5[W1F8Q"-_G\E-R1W)'GJ6MC^-UM!48?'R[-P/A$GYE]R1 MW&ET9* ^Y=QMEG(^FHR&*Q8I#G4(.ZZL!1G8E-R1W)'2ZWS"Y/II;<#'H6;'% MI&Y([DCN2.Y([DCN2.Y([G3?.Z4"E*8FX^+$1;S MF3"8[]%>YC\Y\L;WJ?6C@RL."]S9D)0.*DCN2.Y([DCN2.Y([DCN2.\WG MSBY<\]1>_KOO(GU^ :L9G:5K+YW:.@J<$-[*)NRF@US+.48F-KI1!YW\4"8) MPKT'X8:^^^0JS @]V5]UGW]NPF R<2^Y( M[DCN2.Y([DCN2.Y([C2?.Z5&WE6XRUPTI=,[RR^!_SRZ/KO\X@=WX/A<3U(? M:F.'"6GFGI;;1MFO6,:*['VG4*W[X;:0QF?6HTR^RG' M1;*T5YQK-P'S IGP2M!4YPQXDDESY1>:ZBK M6E=3VP-YI,@C11XI]?AF\Q*,9TH(ZX>_U3^ZV^R#>Z6;JEG)P9*R*V7W<&6W ME.BNTP2OFL2:K6&WTU?;M:ANQC M_)=/8R>C_=.7/@EVB)_K3O,WM\@@_K;XY8%Q:NI]_'%Q;RQ^6*SK M%-;U<_YU0S_5.YW"M]JG6N'KRQZEZ:=ML_@K91\%J^J8O3*&O.1%>*+O MB''.\Z,2!O;_ML)I:)_@I;0&__OWHW'Z^_2QI5@NJ(\;QXYF =/X2_.@THWI MCTU8J'>G/W!O6[V0[Q=6M"MW-W?*V?6OOU[JDYGTM?,R=CL::9FC*W^8&R;[8G5T4W3># U\]]:!^QD M\:VG(*7X(SMY")CUQXDU 8A\M-SOUFN( I,]R$#FGF(>GZ+8+=/EZY-_,MF. MM=/]+PX;,#_\@/*;/H*]P +\%*S&:LI2E*< S:V_K.9BAM5>)!C<__OCUXNK^3KG^HIR-[OZN?/EZ_=OR7:S!F-U:.2#& MIVTNRF7,G*YYJAGZ>YDYRU\WVF];.?N_**,.*ZXP<4/KKG,8Z:MRB.M*X'W&PNOYG*6F:W MA=@_1'+IDEQER*6541@-3AC/V3'%4<$S*WQ2)J[_/50F@?^L^%.&=JKW&(\# M=]CR/NAK$*(ZLC;*/CR6E=7:?6#09* NGTY7N0QH=V?[FGM=__:B:(OO= NQ MYMZ:,GYCH-WO#;5OUM4IHTF]QYM]QH\6CG3' MBRSOT<$4.2L,V>',ZM[]:9XE[?7D,B'LB.A:6D8TTKJ:UFN('2Q]JAV>XS5C M"3N7:FJ_5UG?2BPU$$LK3O":L=2AN*&F-T4O'8]_?H,W-B&B 2MA[("-G4AQ M?6#C9J?V<=BW*T[MA*A?_.#/QHVF@"PW4E&YSY;0T(N:5[V%.*<\ M$>D?905"P]YSJJ'5U<=*^CQ-@M.Z.6EOP"F/& V[%;8E7@X0+[DSN Z\Z&"V M8=5[(_!R'*XPEB2(\.!UN*.F?+'7,=Z<%PJ-4B&6P-=F0WOPU\M^S\S MA_>PVZP481U;]QB_7Z>=9[S/G/5U3-_;A+RE;;X.74P/C"I%"/+\;B*:5@1BMH(FHS7LJ48G[T%(,.TW MF%9$9+8"IB[>G P*KN!V#J8Z+<5FG]A)\:#MAT>7BKC=PSHF+1CCP>.Z\^TR MXM"CM)]^09AL7*GDA(8)?QRTZSJRI$UGN%2M;6=O1L)!+-:NW M)Y).4@/QM>X-R_;PI=,-7J^@ 8#$5S/QM=W#O39T'SZ?6 MZ\:1\R,Q>S<_VF,JWW BEY8,O-%4!T8^O5=Z4HV#U$ZBYPF0\EC!NQ:C*=EF M$BX[S%BL7^\8:.GIU>M3I/-=_E@.9G64%.ROT;K5,/G%\]3U7QF[Q4F+;/PU M#6V4EI%N:]A7-:,I^4;2&WJ7)GM;A1CON&=6":1+=#50;94^SVO$5!^=[7YM MXX2EQUWV:&<\@?78KK^WG:J&M*TB%]A73^VT*P44LX61B36U7+_B7GOFFN6L!>V'>[-A2S;=Z?..H9GSP;T[T=#8+ M89(K=*1\WJQI6,'J$&O*=Z3Q-:[GN?U8HLN<%3# M;$I$\7A<\R2)07&1LB<&GA,-#NE3?AAX>G59[Y MEO"$XY'4;D\.L]D#/-5PAF\)13V,[/0'30D:'D^/GZO*8P[7,'=7SQ<_4"%: M/4_Z#&A_(TC_^?5;B..A$F$:)=0O+5!8.]3157U0U^B(]7BX![[7T8)Q]4CG M;8$1KX3:;;7=K2OC78)QW\&X>JKRML"(Q3V:KIJ#NL(#VP-C38&#YEH?R&-E MXOK?0V42^,^*X[VPL([YRH(0JUGS7NV&#F)EQS$MG$9*S +["3T;.=YQ"UT8 M;JQ7I&!X[X^PFUG ;@2%;US+BT;>^"(F!SQ7ZUH%E!W_-VGHG.P(9QN&7P'^^ Y2#'2NH_'H]&;U8 MCHNESU_\ -^\8[:@?VF!P:FJ9JM5TB2:=]_?+/9. %F@ /LQ ^$H:;SZDZ$@.YK./^ M61"6A5+O35]N]!G3=/L(TU!G.@7:\Y=DR'W5/5G8\UV"W;)K-7;']YV;0W_^R^FKNF?&A(BEA<1 M[Q'Y6A=,:]@(/; 1.JJNR;F=AX:E->-=-6*IWQKJ;=7H-""'^7BNKC#*-14W ME-S 9#]88#LAPT/Z/6(554(J@.^GD;H6D- &4&X'[DI-:!2K,U[&AJKZ ZND$9@!*0^Y&2 M6@<@!Q@6[=31.4]FI&X,FHO)A-D1I@< ]^ -3[%G0< \^U5A/^PG"PQ0!0Q/ MIO"_5VI==5#25J,IPGEP/;D0!+\%>E][*';X_]CS[05DQXO"6Q9&@6-';$P5 M:-YX_H7,)R\]VYTA2<^=<.J'EOL+,&0*WX!_\Q#4C(U%MV,?@XDY\>RW6\.B ML1N;.:'O?V+4Y)X>%(:W8L(T$\T:>+J5JG$DD!L,Y!H#,,V$KX[&>^-U<4U! MG.9:2QB[<<1P(N7#6(PG^@D+BBFD@PV[Z2\LY;X,WM1O,542QQM8OC_.SY@2 M0IH5?*X,RGHV_0Z:3JI6T&Q7!H .!\];L9X:CFPL(S747G?09*==@KH1EE3# MH=P%)=U7S5[SH_0''X0Z6V8[*5:D/+!'Q_/P0@Q'HQ LCBQ9IHQ,=K[5,SI*I#PV$IF[L,3:IGK&O=JN/&)38;" VM8Q.;Q1H#M7=H MXXWWU&!A\/I24V6+SD01B=Y5 /^ZIB-E#;9EWM]AL=$)!R M*^7V(+PLLUV;ER7EMED(EG)[R"ZHJ=7F@LJ(9570W@L .\&/NS!Y<5\JG9@EH,TMJ"&)*2DI)U4/)X M^HE0%&-J@=+'RF3'L_UGID36CWR6;^4"_?VWE0[4(EJ1:'-)H+A'3-P 4*Y8 MZ7M64\?,2Q4LEX8T'MB!4R'%H4E[J[$*O 9QP-$ /;5]2*U"7=5%PO.7S^^IV=Q<-\_GLX&:<>*^=Y&2L!< M*V)C[#QLI=,UI9-Q+,?($B:#;0 X6U,UXLS$&%B,XF?#3K^BB M>'[$:()%],1H?(5'MY9D70I'QG)AD? "]=P\3:B\N&'Q.QW<[=3G_/](AJKS MPCY]=\;1$Z 3%Y']%B?GQW;Z%>L!5C"+\E\!IB*MTV_2C0D0SK6F(?L8_^73 MV FGKO7ZT?%H__2E3X(=XN>ZT[R5CPSB;XM?'ABGIM[''Q?.AOAAL:Y36-?/ M^=<-_53O= K?:I]JA:\O>Y2FG[;-XJ^4?12L"@Z=-Q^UPJTJ>9.<:#=BG//\ MJ(2!S97&B=[6.QK\[]^/QNGOT\>68KF@ 6X<.YH%3.,OS8-*-Z8_-F&AWIW^ MP+W5*FG]!4GK+TH:(5:YN[E3SJY__?7B]NQ"52ZOSA9$YXU80 5:QX]X?WU# M5,!.B.^R:=+==>]Y/0D>IC.# K2L_K*:;V#SW-.9YT\4 MM*5X^P-KN("5-VP/S2QC?%@6Z]9B=>8D@UL?.96HC*[.E;MOG^\NSR]'MY<7 M=TO-BZ;LX>KZ_N).N;^&C5S=77^]/!_=7YPK7RZO1E=GEZ.ORMT]O/#KQ=5] MP5;6%=9!:S53WW'[RD@A2US[I @_XFKV#(^S\U&J^>N-Z^#1\IP_+>$:"$L3 M_C'RQC1/^\GGR)3<^[Q/(\3Y+"[N$G/KLT1"]V#LR6DF0$CB+Q&BZ M@2,Q1?@$,] !OS /7! W=B#$LA?$"=X3S^+!UN0W\'D%OZ(G[M0*,I#']'D6 M E'#\!Q6%C@T.N@&Z&"_\O\6[&VPN(OE;L;VO$EZXDQ951SO!3;H!Z^J0MX8_P!X[J$"@FTE M&WZ&GWNR/(\E.Q;_#$^5WY@R9B[XB $1)MD](N@1J#Z9N>Z)(*'R[,-G5>7[ M$SP/$ZS8<UM6#=OZ$&+3SY] &Y_KN M53AN'64F>S*_3=I2 K#DF"5RO8]XW#\M!,=61L.4)PM _, 8"$G IJ 8Q]2Z MS*=$=<"S\MV)GNBA'#[P,9 Q9XH:\I$;(R!F\#Z;1OR[J':^>0[^BVP?8L&( M"&PI']#NTMN??AF-;NBOVJ>?2&*$*J1OBU^C+V8/,;"X/?N4?QS>#6*'"_Q?F^5G@-^' MP%G&:FTM5BLYDV]]G?"%]_4]$VU][S.T 3N6_NGRBI2E:F(O%8+8MQ)O7,EL M=<\.0I3TR?FY. *T0!,Y96D#,TLFXY0X&WF(:?*LJ?# M,R)!,I(8.'"_G=Z=*F,TP )^NH%1B.-=I MBX0>ES?_G'%LZW$;$@[N&?\WGII>R!9_"(==@D&&)M]\T^KQ+"#["G[AE5D! MWVN4XD"QQK^#0<&5(]J)8S9A :I%"RUH5"Z^AUM 2L-3 GHI8$^P"C !XYQY MU)I%&B6C>='V+OHJJ:NWOT>S/9]\=TRF'#8;B(!KOX"I V\'P,XP!*K"J3=S M26?39- Y%0CX]3.:;Z'3M\/XWH52IH_PS8HU?A!D_TE%RY_>G@5E=UJGF?,- MI]-?@)_PC(!*]92^KI[2EXFR-M%-W=ZIGOK&I[,GV]E$-W6VZDR_J9MNR) @ MW!59' 7F!5H# %? ,6 VZWB"@B$?DL6D4)7?9^-'>A"WM*T0#.QXC#WZ1!97 M)"A!L X_0"Q:SXD] 9]GPB9PQ26NP[@/FJW82_/6BK^ 73WP)T@O"8U5M%LU M$>>BQ0A%%F8U69A54?Q+9'91Z!WM'#N:D=^-PAW"2F?N&%8/NPZ$G#_Y889B MM3H3(B@"!MD#*H_41$@EKK./ED$2[N_\1RP#&UW!D! M-!D$/9^'R>_-E0@.2 DS": D3_Q,AF.;/.3)^IOQ,00S_^GX ?!9!QGD3!PKN^0%J7;PU+31 MIZ?S_M'WQ]\=USU5]@P+HP6.)-Y5PK(B#E(H:Y95'L4J]CMZ3ZX#RHNL! RX M^)X@*]A(H/RCF&_I_/$ HU\"H/"H7 B,/HT1P9 ".6,&KAQ8*!S+G/.X&%C> M9.8J&&X+LU H!*10O2L>BZ>"][IT#FL6($0ACI!%Z)[043"/TX7'SATXX0QV M#_0"(]0[\6<1#\J&2&457\]2<4%FT9#C1JFJ.!-TW#&\P<5F!D=(%+E C^3! M\<^^TJ=A32KB'+UG.''AB^ /!'!:67CXC:E=E05+2X\>;GM'V;V) !G]!GSD MC:2:9LK';T\.P"2#8ZXBEN-^'N6!S^A,8ZT\F\&C\ MY5B9*A0"Q=L"\@BM*9[2.461/)J>D[BJI\JWJ9_X5: Z0E+\DR4TQ-]"L\Q- M!%^<%(NG2BBHS5ZX1\?HNB&,5)+A5%96['DKCE ^T)1/6J/$!IFT)I/69-*: M3%H;&D6Y6#)IK9ZD-9E^]MY+V4[ZV?*L&;TP:Z:S;M9,'#VY8Q2XNHT-ZQ4W ML<8^!E+$'I7+@D97^^$:8(K!V9/#)LK%#V;/T(Q2KB<3,$H#+(>FP 5JES-^ MS4AY9/U/H6+3=\2%"WI-S"9OC@*8/*\D8"\.^QYF H69?F"Q&\ M S!LGWQZ[XF!?2MN5DB,'OC5T=M[5KEU9?<0-P9GBC7$R[82"9RS,=$B6&61'["I?EF<8I/G;%K4/]H MDG$,WCKA'V?@Z )MX6_I)OL%V2_]_,=@V!7R+T@8'+J8\6@$-7X'%\9B92"C/4XHXZ)U< Y.+QMS"*[WBE.K<,)YJ):W@O$]F>L+&XD(?/4/0-\U'HUBB^S@[ 8(7'4M")!VU? MF(@_G"IO-)V/M3?=KRU92U$P-Q.V JV)>H5(<*JQ+AV+,UWA-_ : M9_ ]6#$\:XSWK?@%8BQF0!)G\_&E*KE%HB7NXNRN94:NN9>J-18[^DMFFWMF MZBY7'['"RRJY)_BF^RJ@E-5#'.H^.*T4:YXR:"MC\([K/-,O MDT4L!=BZM0>- EBZKWV#U&],( ,/NF=0?9AY'_S!(LPG&X,NQRL29T*Y^X2/ M,:,0-!UN/X-"Y)\6]J(= RF^+,NHRRGP%%R->52.V4,T=^R+0#]EJ3WB_;#' M35 $-+T(WL*45P[0=]/?/%4N%R$.RA@,552[RS">OYXI2F.#T\%VX0 #.O![ MDO );.03=%3FY0J=-'(W,:/CS24\^P&KM(3,[ZK@$WHG(E5O[ZZ^[U+4S._0 M>K$' R6$'@\'O/S+U8? $V\X #+OS\6'FD]#I>DD+Y=?P>*F0+ MM&/\VA9;X*FY+#JPBV;/,YX_690^B#^B?, ?^*DP(WF.EX#1V_G5I8F;TRM5_'J=!KX/T1Z1D;VQYB. MXHM4L\RZ/#P?V=K'USN IYCLMZ@'*"WD,&#T6Y*7H<3I,2EDXKR3N;.7PM]! M0@8>^TYR"JWL1Y\<%EB!_?3*=7220LR#.L_6#^[GDE+G2=7^ U9BDL9UO.E, MA)X3CSCSR9F7_RQ89)[8#@6JDY6<*J-"24BO!P"WC^ C\=KQ;'U X7:2'<_B M=!S&HO*LCRR23&B(*'IX"Q),8^B;?'$Z@#(@'U MYHPYE[6, O9Q70B*R^43O$G^V#460'GRCJBDVK->TG%K]TN8IXW>.>TB+;X2 M=[6D.\%_9CX>W)03%7+[D2ZDN-W ;X1X7JN=2A,:@9F41#E=#Y/Y_9N" 3:SNU4B@V$HI.(A1%IZ@XH!(@P3$3/?EC MWJ8@.8,*CK1L@B=>G\Q[@&MH/YE:*5,K96JE3*VLD%IIR-1*F5HI4RMK2JWL M%*96&DMS/'A,L&%1P&(#[HC@NQ,/R%5<'RU)<@KX M(]6D8"A.?!EC&943,?&Q?/EBWM:;M^U*A:_O VO,1M[X>XT3XIO$W"E(OA MZ[T,5,?;4M)][1DB1TORC! HW"M,:K.22!J_^N.),[Y#3H@&/=)=GO$29X\;34PGRHB-Q< M<6F8W _Q*,!<,E,<4@^82!3.U%47-_Q(&Z-Y/J8&_<$3;D6)W]1Z%5=!7E$8 M'I.G,-@97\7%=8K)$BF[=NK[+ET(P'[1$Q_SH5'YO7)2LW"N-IQ$$/-&T9; M.'[<34&LC?*W(NS_$&)='GR(7[*%O/7,?%4L$BRER!SI,(J *U4QW@ X=C!] M#Q;]Y "! @J=+9*:DK?&/",-(VN9JC^ZA23VB&8VU)9FAJ8^O&<'_@D@#KNK MV&E26RAR8:ESX(/E_1',II$-SBX\8,SSU+X'J-K\R:20?A1X3HI.,TG-0 QI@6:#Y;(F4C:Z.#=R\+5L6@;Q-\;(Q9" M2@-\8>G%Y+LW@+D),.\X>KUQ04I!;6-6UO2-S""CO79KF"9I['B;Q(QDCWNF MM.)-9*V!Q7ID,E"Q?2FJV@_N&X3,^Z4,$R9" 6[A' RH\\7$1ST;KGT[5A31V&U M$#SETS;WELM$!#N]TXYNU!+&ZVFG1K^6,-Z*Z8QO!&,X\71IN M=)% \!N'X%=GDEKF-8ZD;_3XJDMDBT=&_!AO%4#X "+^)/H.6G^C@:2""$*N MZ'"?1@J9+ KNYRWR[!(EY69@%2MTPUA;HW.0(<;R16'C68#9I*FN-UK#SJ*I M1@FG836 %H_-;31 L01T!J!(SX(ZQN0V.49>"S"[VP%F=S4P%P+1!ZX_>=5R MQE#ACFK@.>BK5E&@1P/5WG:@VFL-NXM0/7E[)?WMK*3?&O:W)S1[J-._HH^) MK77C#O_SXP-[]7$T1URE M?J^6$XB<5(M<^21N9S\!57C$+XG646$%AB''IR43@>IM0O]NPP[2VZ>X#F/M ML \1E0=V11DQ9UC HJ3L%K^#SK8?6J[(K..HCP/M5*\CJF[FBUPJAT,;+P^_ M92&<)2^V_7#XS1Q-2^$%X13*0UKQ>'(DJH26.7AI(E@,\6R[1-$1D'<]Y-_E MDXHBZQ$#X/2S15\$JO.9#\$KQG.H&)V^Q%N0P/=.<'P0<8H_7KP;)-'N\9S< M*:/DF@!;CF2EEA*KW]KB\H>N >X56'Z [_D>OR=]8PD%F-X"EBN%]K]BH3^C M@WE9(;G1WLM"E P]\M M*%&<_X!"J3HG_N1D%K(D*2"^=%O\\%Q^-(I,IH;UK0\7XGNARG+/&'2;I5L\ M<.?V^ELZ;R<4#2;BFV0D %$;-351V^-7+NYK:LC$N5^&%-R?5-NMND.S:^3"/F;$P,B"M=Z42C:UJ\CW%(VXHJ5KJ3_2V]6>"3 M YR0KGGY%\5<,)'VGV8.\.T0_1]>XP?PR4XAU[X/F"[_'5[BA\8BU!.B*6#! M^&F[;>Q,LK!GNMA.6>I0OQ>R7NDH3JV+[$](^.8?9!E3MK; M&C^XR-4%2?P)(RD!_-KDH$4=[&AWL+L![8'"%DZ'P]5#^G9Q&KF[<7F MMB[ZOHL54KK2_*T>+T(K1,479!W\--\QI478-$6 D0[B'\TT,I!9/%9CKGDJT6KYCL3 MS>M2WL[QB$_ER:;GHR0P0:Y C)^,0,<\,C+%>/S-+1SP:VWQ;SKO>SO%>^0+)W,'O?-T\[1)+6:@M0&&R*13\ MZC'@ 72$NJVHC <7( M:H2AI&12TH1?+L9>NT6&&C:_C90KO' D ZU-?1JH 6#EH/ M,.]7 T4<,3!0=%7CL:)G"@8^Q#&#.-2360LMU*%.H:AF>:L&&KV=7+7DQTQE M\)M$019:3,4?3<>/80=T"I_-SV[+/WW^*VF\#T\,T3DBT=WBUH3O&?<2#SJC M#G1%ZT+A9>-PK=^F@ F?#I6$E3"FFJ&?N&39I$F;&D=U*-P6I;Q;MN1,FZ)Z MF_V^<3HM_GOQE-K+\RC=E,)WM6<'4WXL9/'90?/C8J-M3@_GARS&C6RP%XL- M9PP+N+6&SWERIF'6L,+3A]E/'G7Z2&8I+M_/9JDTZ2R,%U<"X2DJ\G7WWOD3::];$+[,G^7CK;:; $'#+1OCB- M2WP;(XQ+XG>6: NEH)*TX*WDR!-H!A/I$=G>P#$Y@PO^F)B5D*O/MW(#I.9"Z$ M<.Y]/H 7Q@VQQB)/.^VM8GG9]B@;Q/GB2:."L ^OF8X0ZW$MICSVA9@+ M9V M/W6+G)BQ6Q[&038L54)[F:$M]J=D-KAGBD?L@ =G,G 2#?,GV#4H3."9]E/Z M+JJ._*1%D_LJ,C0?Z>\8F(MX"9+\S(Y=M/7 MR8QZF7$^-U%+\"(S D D(4BJUTKUD1C0_A;)Q5VNE(MWX5#&KD,6Q>7*!\?HC RPR2P@[V?,,(8\308\4UE8@47# MQR#+:@Q9C2&K,60U1GW5&#U9C2&K,60U1DW5&-W":HQ>V6J,4[IX"3,9FY$\PI]K$DG[+6DL!'$A,1 MLX?%M^-X(*5ZV;RN5[0!S]X#T*_374(HOA-&V4;KD_2'%CJKB'5CM:](I,.J M?2<,R0"=6@XM'-OUAVAWA[[GL?CW<>LT!3Z(/'A+Q:L"C#2"_>B^IJN)"3.. M:95M4Y/MTAQ?.DRYWL7">N:QB1.)H/OW?!IAND?>A'T]N4*K)A6J9+\78@&C M3%<7?@84WE5^!X,V9%XB?GJ[-8R^^_']Y+PMOF\AU;.W\1)D>CF(X0%V5GR/ MI@-6MHJIH"=0IF]YMM2"2C)27W?3+/1] ]4=J9&L@N$]V)*&[@FFTC1&7G"1 MF44<>\-5,XK&.@#@K\HS6QK](E MX!V8!NPSD@\[XL+/T&:N*9! I0&BD0BVJEPL!-"U?+F:KNUGN=I=!!;1"1%" MR5)BWR2%ML'%P0Z-PQ.!HP=NXY])_0&" O"AYCO7=@A,O;6=T-WKKT_./OIU[=&(*%'WT M?.ZC#,X?_Y4Q\=&T8@^ G'SEXN[F)FVMQ&M67WE%J]'6/OSQD_@VJ!119NJ$ MR8#MA+XL^3&@%?L!&H>HZE,/WR#3TRI9T]@!O833<-:?9ML0@.7J/N(CB<8( M9]"7].>9Z]U$Z..)'8L%(VC]*V4]@K^KE8))*%/>R"@YLWBH M%^L$_4R_S9.D;60B"YG64YA_] @RX8FBD80]\(9#\ZB(B06MG(!Y)P$6ER]T M<>)?C'$ YCSR+KN@M+D3!Y5HA!1#%[8T8=1,.Q2)#^#NV& K[)MMA-HTSK42 MY@082;.XB:4'OT(J.^3MFL0D-$X=7C.@P8Y]6>T?QZ%BAX=/#I7+PG MFH.ST+EUEPJ GYX[@IKB:@9M6>I/2N$P^3U6?7 MJW+)Q,GTX-T%KPJ%(D\BZT<\&I(V)*Y(40B<-YLF(NY3I$GD-@8 M.][ EKE):BAF[U"?]CP=.!7!=.*]YG([%T&J\$T8347P9:$ (PNCRZLO1'X*J=PJI#,: L<\ M4'=^#^L%KXS6,'1^G "VHZ=2-K8#B8OMV0MSG*J+G7"H^ I!.$.%TT&&:J<&,&S%\=BTXG.]L$!<\/>CK M]%#NUCW[8^9R\H"KI/W/] [RA6Q+;KTP\LZBF1VAWWCA5+]M)D M;/@,M^"IK6=!)Y0/U%3X]:?XCW)BX3KY.:Q)P!J.4-@IGI)0N6"X O,^,=[>', M)RW*;6I2TW-F7&H6"S,MZ32[9 51IB6LL^"Y90:NSG]I\7!;^(7L;(G,LP%D ME.Q.Y0&99U,C*4SHX4C'_6$EA3 SP[33^XMH_,$-%M'7)$V3>V#@>,#N5\3* M&H^I95UG*,XV3#N]9G2"XTUG41*$)/XDW, H1-8]$+-OYZ!'$,/9M@D( R?\ MXV02,+;0,CDV[N: \NWT#B 04&G%*WUNOJ CT2&4PPN*8!8@DL;\@U-P^'Z0 M>D"3@2)2BU)# TW$$]-X O=H;DC?X3O%.D69(7#_1/,66R)-J3,%D"NQA(37 M.M^O!M;T(.I-2)7SC+)D+$$F4)"9&@SPG(KPM)/QFFINXW))$>%[Z\>RRUT] M?Y<,K^UGD)9O5H'=[F/G_;FVT'PG$>XD<]J+;M^9#NFO8BAM.D*G@=V%AJ*(LCOPSU_D#E26PRJ- &_$L1'B) )@X M??-DYS9$4EW(&R,NK#7.UTS[*<)2?P>='8X=[G;Y!5B8F\(@LTUEMJG,-I79 MIO5EF_9EMJG,-I79IC5EF_;><#/14]@3\QHLFI#/1(E-9S+ ^(@[?+G0[N1^ M9#;XGO8#3?-]TKZC(N)1]"S>4A6_B:;G; J?3BUL8A/8CA@%PADM\!@O&%^E((M(M^-7A> D$Z&RO_EH MB:NZI]@8S):_A44&)&X8.Z6*&2_*%Q%.2-M=9).R-BBW$"E M%R;B^J!HYE>1YQ'_N+@ASJZ#&$5+'*>5Q'Z 6:B^&/])X_AX4(FW+4]G,PD" M[EM$.M^PL\!=BO-FJ25%UOH'(]\5%WT+X4PA0,D8(,+&#!P]BNKP1KHBVZ;( M6Q'9-TH(]+9BEL4_FI;YD$D!W*9\^I9=PD_&Z[1&P&Y''"S_;;?\77X;SY,>9R1Q# M^D)# 2 M1;@$B8I<,8,I,VFJ@+#[AKY+I,RM=;?'BV12025R1XKO@A[L\"F#;P4RD M@GBORLS+L(G<>D[_D,_82L9JB>PV$6&)4U<*W-!YM[-4X.U"J'(PO^A6;6G\ MK;>/D;8K\/-%M TVJ- .]PQRGZT0N(@!"P&%*1.7)"2I%,]"Q,SF+]SX,_&L MPB*)QX(K]<6K&G\683LG.CC$M%JR(V+KX=QQZ3<*ES(_V2\2C=KM9,1>]N%3 M'PT\GI',?Y\6=*K<%+^1EH. _G!.QK@.YR4>72LB>4E_ICB=.@XHOK'J.A.0 M@=LC'AC%B^? ]^"O?/2C2#=>*E@5.J,M[0+X?A*7$D&9IP+V+^)S 49C?PHL M.?BFNWI]$:H:@UUZ[U3KZXU;%3ZJNZ407//:!=^A+@0_98U.GWNUKW-Q,WHI M[F8/;G]I>XIJ6VMLI/)MOI+JSI63' IW+_@5F;@(^I(X3G>)XU2MH[=M,P:' M+3(67:TR(=[ M?PH6G=GN_J2<*!F+!4/29W&5W"B]8DU>^YJ]AD:+,WY'3!.*RT:+^O/N B7% M,O5^W:VO[2*3$\"GID/!\=Y>Y-DM N\TZ5F)@:F4"%PK,.YAIQHUB MBFM@-L>3-08 8T@1F[\E$05O/F/7FM??Q9,(\P?W_,WA8;K<5T#$?[&HI,)IX#AHYM$/G$QF3N*PQBGOY$.#W@&_F$] $".\DQ$1<3>-<8)2?EL8 M6H^/F$/$C5][8!,_8'-E$;QL<:Y0 MO*9:H"CQ$ M"QZQ<=3$Z(K,/PSR8#.%:8UD.=!3W1!H%EK^$I 2UM MKV&E!7>I !0XR67.Y 3SSY&^B[]: MSU&\FL%-$BK4,%=(ETH'[G[M>:-C%99+(U+@PZ' 2]K8C[0')>T$/F8(4L&9 M'V9R2P22;C%+M6A%3M;_W!@M,CX$>8 MB+NZ1DTS]):L+6S*4K936UCC+;!EL>YVO%->V'!]?Z%\ICHA3?NT9GNU.%<] MSHK*)$6E'F)!AKI9T'K%S+=>29*M1IB (LJ:\H;60H^8PG)->GK!;^IO%7$V MINKD_O)"^0>\&CD_]JS8Y"()I-ZQ:<25J];ARI4ZSR:Y19F&'-G:#O0VL;O0 M=YR(\>1,DXHHJC?)$$;YN^_2-SZ?_O-4^=#*O-7Z2<5)TLP:"\<3O4I>N3*; M3L&=L)^PQ&[L/!)'_LQV!L=O7)Q?\@G=0- 7'QP(> T^?S$+P!=-FD%]\QR, MY]*M%-:>S *\4HUBYW7,)M0W_R73WU4M:A7WW0I1##L]X]/21HYLEFL&VM6S M;1QQ4LY*&3W+#D>^QRF.O/94F^MPB T:3\8^Z4U\>M*EL9<*]* U['5.![DV MC?_]%ZW7_@2X6\CTWU&G#ALS3_HH-B1K//+331MIX=_"3 M2M5"6!^%(^%CR(ONG4O2CLBO3?5>DL-$]5GHX/)"28OD(&>X?.(P#[D;RVLY M>:>:=,++W T$R!MO4YU)!N3]CT3M($#ZM^SHZW@)?*&YH:"+H':B)W&W D\[ MH0P_D8=( :*D;WE[9P9#V_6+C0KQ3Y6I1[AWA4 ". MC8O %C?<32"-]V5BW(,+?;;"D,P-.8;;3E!IG0_[>49"F%/PIQ*9A&W3JR09K*_M Q+\N$J^FS7]:O&AHU*Y+19TZ^<+GB,!0+?PG\,%POTM1)G3"]->QWU&[77!)KV@['\*U2G%NJGBLL1$KA M,4DA72WIGR2J):H/"-6ESA9CQV=+9\_/EK*&[OM' IKZ*4DX2;AW(=Q"TJ#6 MY<'QS5*55T0*Y/??]_M'&9>X*+AN>F.@3GSS]+'N,(;\?NW?KX[GXE(+;LYW M&@YL#+C545^REC]40*A#\WJ*MGA ODWW;=^F(%LKG\V M]]KY#,@,N&-"_C( M"P[#C6^O%'EW'Q3Y MMARC_3 D13M!&LW*@-& C:TY/WHY&A:JICV7WUT:8KP@FW_R-N%N>2GNM8:: MVC&6Y=N7C5/O^$[H"!'YH10D^XN0Q!X1\+<8FUB!7 3,F[2&X3)MG72)9326 MFW8II1YA4Y=%+,T_BI5.BLHBW/5;0[.= UTN[TWB[;WQUE@+IBX-:*(&U'O- MUH#''1"[QA;D(JY;=V!L+?%=U[?:<_%=8L L.R0VEEWB)_]<:7$=M(:Z.C"U M1KL=$H$;(C!GKVS-3)G#8 YF!I:A-MRWE2"KUTIIDIHSM-:PH_:,O(G<) 0> M=W3EZZ35+? ZYWLP?LR/] 4XGX5%5LZR$-ZBV>-.;N M_.%4&_$/T^%S_V1YOXC6#:6/(!T<8U/5S$ZCSR")S0VQ.2B-S0K6=HK.\J90 M!W"HJ5JGL[9"W/]*;:K8?:3![_Z M^"KO0+5/: M."R6@N**8O=FZ\E^:]A73:.R8]BH*]/W+]QJZJ>.ZJY9Y!5D2X=DA&R+&4J[ M3YK+O%%:\YET+=/N53B/912BD3C$9$XVW.<[3Y%KH*^ MZ[91WYF=?!N+AN#PN&^@SQGOLJX$[(5Y,YG;-O1]9;KF.;K(OO>P=?!AM':Y85%J+]?"B0.UTZ[J-EPV_ MI=#NO]#NSC#&Z3(T7.9Z(B1\3K)+RW._->RJAK&OG<.E.$MQWNO&(INQN:FS)_HI#9X]$@\T3HO=M5MY! ?7H1Y/ M*US$31.MNP.P!=NJWNXV.M-:2L'!2D&]W087Y>%&3(]/':S4K2KM./7:RQRG MAMQ62S$Y6#&ITY?9]+#H::VA813>K37IL"AV-7Z.T#N#/\?.RS!>_Q6X8X%C MQ]05_UP@I[9(OR\.$)]]=5[(O[L$$W:2OK)8"Y5X@N&-%437DP)'\AY7=@\_ M^-GU[3]2[S+9RMX=#QRX'H+UG2G1T[4CF&JM_%N MY8D!J%S7_PX<4(CD"OB\L%AX2*A$\#9+ANK,0C:9N8H+9 L1B@JS[*?DSD5Q M%KH?J?Q]?Z)\?W+P@P$^^^%W9D=*Y"O \#'GT31= (/<7LIV=#5Y&L42.5> M,5#+M:8A^QC_Y5-/8_JG YZG3]-O[.4^5G &-6]*>#HSZAN']U=G,I\VO94JP?_/WKLVMVTD;<-_98I9 M;V6K("[.!VQ6 M"601L6N^ 8QK^'X4!V_4#I;;D](;F'UQ.[K>H?5,VROHMJMR7E=T>0F%G0^Z+ M9CTN$(Q*,7>[0 7]EK*'8K9PSO2)A,$PN2F^DD59D>#/'T]J_\_94X_8+J#^ MWAE&<4"EY*5U4,GJ[/60)92UV2O.K5838>SSB1ABR$PHEU1#[0(9VB9Z=( D&-R!%4GAE?^1MGCEN#HXP-R1R/ M3%TR)75D&]9H:(IC6Y%-4WTT)?,/4S1[\T]-@J7$G^C58T#M[U?V&"#RWG9? M[+<0%69U+P"=6[7MVRQY<>&/QXT 3M+>): 9T:$?)&=B\#-H@.^"T=AM&0J9 M!.@H_+!_W8S>@ 5*, !P@SZ&AWS(]L8FG/R]L9_/G0;9O)*W1E$DL\FH"7OB M>R<"4 QWZPV+HR3]*%CL*'$%X-_@.SC16\'(1EL"0I\\IO7HEFU3=H&\4#*Q M1\1/FG"L3-I.)PU'OC!V,7Q/''B51"R%=Y8&]\D,O#B&B[^58DA:OU/3-AW5 M>_N-71-\\],8WCQT1\-? C\L>'V@+UU6)'_K;[MH ]F[\)- 9K:#L2\RM,-) MGURGB=7YFS@G+.T,1OH>K$!3*[K#]FL(Y\\I=_7[YAA MN1V/*5H'2NZ&D8_V1&7F1&;F9*$O,-?Y"OIQ%,)Y$QTK0N'78%;\%X\&J P8 M; ;-"D'5<'NQ/7ODP)P>;52M3_B[;X$]HN3A+8SH-(27AGWR8V_YF]X_!+!+ M+K79XV\_? (E]9\1,.3%B29.8@;MV"VWC1]-+!IRP_110BJ9)8+_9,(.XPN40:936YYM59?BVU 6I M-&I-](O[V[+:%K!UO*$;)RNW4%DX)4=70]=G4HJ.->CSL)C 3&IBT\=C)L;5C8SMWPNC:"\FQ"QC M>DO(KA?W&HGN[HG_%X-^2E9M.^(O@!_, %K!VU'W.^MT^YT!YT]5*[/?M6Z7,\1.[W(&-GO8[R?7LLOM%57K3+1: MX(BZMLFM9W0L-KI1#H5(LN.M&._U/2\QY<>QY/D7/L7BAY*ZC!^6CR39-M5J MV0'RXT9?[K[=DAO"")ZDGTBYO*:4Q.=CX$\QP(:+_SNLU4T:/A^2)/?]N MG(YJ2_:5H1^8?<4*&4ZS__^.VV: 6Z8?!W/*/M 46%"F(Q-]] PJ213[8A)P+W,5J9E]295/=16Y_755K"D9J[6#4AO+$).T;J:( M_1A=V:BD[GHRHJ.;8T@.JE:"E[7TD._TF$A4.L'.KR,J;XOE49!E[FM;M.7G?OJ;1 M0+P.AS\8W"E;O&48O8&JZ((A5NX]UQYZ1*XQ9ZLQF4YZQ]<8;,6CJX)4G2F) M:PS7F,8U9D_#OV-H#&80B+I@:I5IBFK2F#J;M;3:K;SV;/<-AK*]'NX\>R64 MTA#UY!IB(H6$!$Y8NSM;\FX'F%J M;V *8G7&/@ZP-@+,.CW -$9S9Y[9&;Z]V_KR[C)=W4J'^#(7V6>H0*9X>@72 MD515%D2I@8X919(3VGY&NW2(GOXVT,3;0,D21+4N+D<.T;."Z.FOWTR\?M,T M\'2W%6NT#:)GSW-VAXG;\,!%CA6/16S7H--?QYEX':<*IE79QO.C8AL1=OKK M+ N+HB7!E'FTZRP1=OKK+$O"E )!-K;5C705]G:4\AF#!^E\#HW%Y3:K*$R=H/*8'I M/3M#&A;B"6L5O_".*^<25&;9@%\4'!YPAG8"9(FD8> M*:R%Q^B2$M*CD1W19!XX_A20^$53I"NUGVW'94]-6=7F<^^3.WC[_-EAPLF4 MD,9LR'5%7*A;R]_#_#T;NQ0(JY-">D/X)1/T%!X_@1>1.(NQO@NKQ*>HFDA' MLS8NIG2V-Z3N^N11F+:'0K-#5'0<[D[V'U-?X]B:;QKSC>2&?4="AIQ0T>>V M'!G9;\N]0L-(5*;A" QX]T",V@>B]P96=B#PEI#Q/AD_$<\'W"*3L3--J+7( M(W)W>4\A>;8#!Y3E\6TIE)B5>8H_ :VY;/]ZDSC::[L7\!I":FWE+_9 M&_A>0KF66048@@L.64KK_LQ8CUV')CRG/K/$M@O;*9W.$BYM'_%*1DZ(-(?( M*K=@O"/VHQ_/9XZ$W"MKF6#Q$=P?.S7N?J[YFLNG>YOTXKJUHWMTYKIX=8L. M:705S\B8TH0$=PK+CX;0HWX<)B^O[];%UD\^R?KES_\!IDA@CIG;\FXLW\/J M"F&O3?"*G3%8E$6K3EA.CR;G/'NYG4SLU)^PD28_(3&U@\A#K^,;!7;##M[8-Z WLN*J^6N.VMSS9M 9)08DI9UE?@*CM;5=M%$I MJ?]G?!EPM_Y89I^6TT@'[J$I0QANC'\3@SO[AO$>8+P'&.\!QGN K4E!$WD/ ML,9Z@/%N7J<>RE&[>:4&(,) E M9[ZY3[,2A&$G# 3#8(W M+GRVV,,C&RHG"Y+2M/^ZOQ:%$>:ATE7?'8FZYU\%PX@9Z[?]A.&Q>(;]'.91 MA722V-**A/%P(F2. ,PYHF@,P_0XNZ 13WZ]")@EL;*WU<@3"YB5./K"JOPV M^PA?O>Q-M2/XD#D 6[U!].+/V\VNGX"%M$&]L]GP?I88/#2#:0O[%0RP18>/ MS )PD;THZP-O[)>EN*_S+E!8;ZV5KEMO^4S8FBAVCPD;B>/3<"K%&&,JU#32 M/^\JEX:*9GX0I0W!UGJ.S$,([EQ :[T 5M#[GIP]?[8A]2TE_U?G0U6]^YA2 MA:K:XDS5Y\U4+:U=Y':&+?A CNHMLRU.L=QQ<>5+KS1DKD\FHCMY53!LK;UZ&MFN=J= ME\<5[3(4;0]K2+V*)C-%4[7V*UJ=S&#M+M;YY#W[SA#\])5C*:_.W:HPUA:6 M$!8:FK?02Z_=YZ)=1(Q**PQR@EF"I%9.,N55DFW$TI9ZI6:PA!T:-3"^;:GI MOIQZR&6@N+*1[2Y7Z8]-6=GK*49A_U=%-310#5W0U&R#BTPPYQ!TMIBMYNR! M5,+$U@ D/3E)2ED;>W0@G3VGS"*V1+U1Z:A2.MF=13<7>A2N4S3MMB2E#,D> M7JMZ#\H&V!%#T*N3_=>XF"WM.\-5F*MP&X/*9EU!Y1.K\#F4A6)2!Z8Y!5@D MYR;U'^-END8F*^F1KN8,E:]9JI0BI(F[4H0P$QYK79)TK:V#Q704#X;''I+4 MMKIV&#IC+*>Q0\+2K;!6\65"L31NI5)F1/,^ $.X2C_4O7J*SYD2D8Y55&0G M0&8!6)[ <=]6:V-F@3^FL&JL4&JMU %KY/#Z%?\]1%W'/$ T1_UR*4BGE\6W MU?+.E<2XI&36GY<.,2$Y8=G"MK28+57<97'E1S]86X0[C^*L0,D+Z;0D[J][ MV\Q53"OWV&Q6ZG/3S,Y1G_Q^_#*Y]6*K56&OU!.&F%6:I(2R\?FPQ3@X)A!, M^BRLITG%,9]^]\KLYO&#>9E=QQ3I4[)-L#583Z5//)1Y/CVKQUS-H4VS&V$- M_W8X.Y=6ROU*);S<3QF/$^R^J,SS)^N-*>_A.5]S,F^2\!GXFE]\+XVEE0TK2VIO M8(B"9+0_A9+G*G-=JU77Y#UM*^I7-NQG: F&7#.7-\]7KI2OG):*KY];>J+W!J8EB%(V?XZG*7 H;T\/!8_4&NBR(6M9K MY4G(/ FY&V=.&'*G) M'[#61)^\9QI&3'Y;F#DTQ;W& .6VME]UIW)0]7UOJF;K4L>5;O&X;9 MLC%9?5%K6Y(Q'Q,?4]UCJN50N"=Q]YAORZ0+IT:U>,9P:X]8^<>-W,3ZC3-$ MEU90TLXPX;O!_/BSE%>I!/DU\1"1)874AM%.2&SE5/,K?:9N ;1=5LW%,A,' M _^\6*6PX'[S FJ[3'*_V(X7DA]_]<.0AO\0B$>Y( ]142XTKK9<;3LBR"UJ M>\%%J[6M?SUG"?X]_'M*?L\9U=OFZ_1F./U]$8-_4,XQ_SS_//]\N<\?NYKP MI*E[GWV/OI&I'7RGV!87?(R#;%&16K)JF>_'=#T+RHZ%U=@=2T[FZM&EN=:K+AGIL*,_UVH+&W?,D -"$13=Y-K"M:7KVG(2O\SD?EF[58@EPYVI"B5YW@UN.+7Y M95;+-IHCW?4<"1CYUSTK=1C\IH=_GG^^+9^_J)N>FT7?(QHF#P-=,$6M)&QE6/N8(M6USE/ MD;DE.V-4;>'1/-H^J3!T26=TM\/151A=)]DG5;Y/=@ASY>.A)2U:;?NDUBY+ M=FSN]=/FGK*LTX259;&"/$+*/\\_WY;/UQDAE;66VZ,;?SJE 9*:D9D]HQDJ M-5XYLM"RP ?W,HVKN>X M.G]<-7:N,\%<68*F<5B=):S,$^^&%L!+%629P^L2X=7D;JB*O8%B\'N;#N"J M?)2SI-FJ:S=4)6:N-*LC+2;G',PP4+H=A?Q=E_RNJI'R8F24W8G4[=+:]0;< MO$E70Z)I[495=ZN]IMUK5>X-9$D73*MRF4*-Z]ND_\2UFFOUJ;6ZT5.-4DN, MCVLSUV:NS0?MT;6=)57NUW"-P;>;:S+7YH#VZ-H_;2/9FPZR<>W5B;2[&"_W6OLCFI[0P3734!'3I0T#,GV=%7-;$]7U490;&M3JUJ;@]_6!I9-M ,M?[]-*+'7 M%F"8+(#+I$-0O9^=Z$T@CC=T8VQ([GCPZA"T.0JQG6XJ,M8O1B O=H@M>),F MNBLU%#LT09_E9!5WI4VN9O8E5:ZER:8D]T6S;9T_VSLHM;%^I"N-$EN2_5ZL M0\]_J1V06P]U-+?7YX7W(SJ31E/--@D]1W$5*@?AXIJ+2RIC,.KBQ3M&#Z3\ M@]?/MHN^CT >*?@,'HP92:G>P)8>>)JYZ",Z/X3GG#<^P*$V&L?N=>HV+P\: M-W$0@ TH>Q+7,#=7$'6]WG-XI^-F7.TN0NWD?=?-C>H=YB\+LEHY?9GK7;L0 MR/5NG]Y)RBGU3F9Z5[V'1^-Z=U%,KO>!_^R$B)Q,X'#KD>OLBF_*:])N15H( M-4>12NN-TAMH@B$:+2FWX55<=0)I#U55K4!2\<"A:&VIV^) JA-(>VKC:P62 MACNY(;7%(ET4S]GO@1/1*W\\#MEM'<:Y CKT88C.@3MVCC0ZHA\_UKAE%_-] MF?3O0/BE=4;'75S5LMYOYMKC$-@>^5C)<55X!V\:5P;:8DW-YL]S7'4;5_O( M;AK&E"N;)79T7%W41[C$-X9AC#_Z:/C)5E*]O"OV('S M^DH"#S^R-[S_W\,X_=$G;QA0.Z0?:/+_$MS3FL6YI\\99;5X Y51IHL<9>>, MLEI\@VTHRZ))Z@W,MD2-+B>7A7JCBEDLO R%EZ%4+/QN\D90EUE 6NYZ)0JO M*^,*W1J%/F5*FZXTDM+&%9HK].4J]$F3Y72UD62Y]A:+KA8JEB@5Q0-WJTM% M?SFP5/0^\&<@U+=[.)1$U][H]J_8F6'W^0]..'3], YR2BQU+5LUJFO9JM'Y MPXD-1YW%DP68>+2W:C2O8)-]Q[;?JJ+2C7+.-:G0I53PMA?F%3IA1-G),)K0 MM$@35>/LRS0-J6\I^;\ZGXI(I;&*2*N;!9&\"G)GG9K8-[2UK3)GMVSW I^@ M%O(LA"9?5HG?)UP"SW;=-_"&GZD+>R0827\PKEU6W431 MC>E>37E.[=W";_SI+(9=?'FHY>E*V].51/&HVF+V!@I2ME8F8N8)(ZU$T_Z* MM3K19 &:P.^1VM+@]>R/1[]B[L[$=T?$F+9^*]&TI[2^9C1)@"9=T!2I)6@Z>]_U;CQVAG3IN;++F7$< ";B M;/R)>QXKFG'4B(LA@V:(@E4]!X7[L:U$TY[\IIK1I"1H,BO;V7;YL0DPK#8; MW&VWX$,_/"QL4)WQJ-NJ2JNS_3@ JV>FU@Q [$$D&H(I MM9]?\>R=YU]I&+Y'POEY"QH PBR M4L+6<'"VTG7*?;"A7G3I:K"]R6#+F7\ M847$\&^7XC] KZY7)+U5YTJKF]X;F)H@B=D>N\7KQ;G'W4;$[2LH.!7BC-[ MD 5%:P'B+L:4BKX-HU_GE"RUO6_ R5!=$M6:N4E[(Q!7X M+X. MJTN0M%++[Z=FBIE^:JTOL?FPZ_A):"(*++')]W1XA[1S++UIY:!XAS3>(8W7 M!O':H'9W2SL+H5U8S[1"/A OK.+%';70:Q:)#9<]Y9F8!6<*>FU9<+RZBBM@ MJ^9>(_-H(PHHLS145>8*R!7PXA5P#REK(PJ(^8FJ8)@UQSF;K7',QC/7B'XR M\96()^^W/378]$[SO\59#U_1%X\N]&S>\9(,REH\HDFS8Q=W7,N MMO(?89\@DGCU;]8? IG KCTPF"Y)6+V1/'HC0$K6@FE+0>69Y)6_RY#@*0L2 MO$FPE/@3O7H,J/W]RAX#1-[;[HO]%J+"K%Z4@,ZMVO9MEKRX\,?C1@ G:>\2 MT,"F[ =L@WH/VR@-\%TP&KLM0R&3 -V2'_:OF]$;L*L]O.^Z08^&%8[:&Y1[ M;28W_/\.)#?\Q?='+X[K@A?VR8ML[\D!,5R'(8W"7?2&IIJE-S35++WA_/$L MNK;\ I)\P^$TA^R[=MPS-N^=R+0P&&!Q9D+(#.KXDOT,)S04>S2N_'\ M83GKH77O!OH;6&STU)^=Z(TX'GF:8Z6S5\N6U3=5L[0G:_8UN2921Z.OZ;OO M2XL^2A'[NE2+)[OG#F7E;;+4-]0-@%Y)IECDXYVX8N$7MX5)!%S[FB5#D;JO8%D&8)L7ACC6C-@.+%# M#+6PACCH;MM3_->%U9@WH$GWJ6RO%Z*]'OT9AQ$C'BRM1!;V&9*,,^/9Z< Y M=$>7T9.6#HKK=547?D2M24;G8Z3V5 ,?>H:U1-C,50LLT5%Z&)9=P(92;LK? MZAW]*BES?5;+G=)'!R!&?W6>:>8"<$NUHY6YY6O_7=.*[.STZO'2>XFI4E\R MZBEHM/J67NX"J_G203ZF;H^IN:I/V>CFY>'V3*8SNS;\&ZE0\;F;?:"U*\SL M-Z/Y^]=C\,_!C1T$;S!N]L/U[N-Z,_6,'96CI&&2V@\XR4R<6>;ZLL3]\L6R4UT._Y0D[BF1W!$-.(B# MV&*]"#1!KNUNZ!R8XKBV=5;;2O'&5E&W%1^V2GFDI?0&BBR(5K;I4G&.6*YZ M[0+A9:I>+9K'. "+J5V1/(FLOJG(R=Q ]A_7.*YQG=2X GO= ?2FE@9ZI@BF MIEV"JI7Y?.L/_^7 M^5"$]%6&%^+N,$:#3^+&DAKP(.Q#M^/X@!30990PP[V M?7WSRICEBX35H@Y=ZV+R@3Y3UY_1$8GH<.+!MSZ]\32R'39Q#R%*[<=M3'LV M!;,Z:SMO1-+. ^7A@*KK0&FR+KZZ;IV^Z0A'UU&L5>-G)J2JERH[6^@DN9%UR> M3X41+[CD!9?M$R0ON.0%E[S@LHVIC[S@DF?%'Y+^8A[Y:M;H#4Q1D,0&^E&V M+_;#E>WNSAVE;7#2I2XI=DNJ%, /XUY&RB'71Z@WR MV'.YVG&UZY+:'6O#.^#>41)[ \T0=(,775YFT:5YM,M#2<++0Y,77?*BR](V MT3KND5N2>P-5%, ZGF'-R7GBJ:1K>SB@:CI52DIO8 F6DDWWX367K0-7+=AJ M^K0D81(HMU>7!*F&S@1:;Z# [F=D"<:ZCZ9+J[BTCN??ZUAQJ?**RX[%5GB^ M=Z$&LK6?,0S8KF51,"1><[P]6XKI.=R?A9I1S""EYQR56:JW1U ME3[R/:3$[B&SL4"NSER=N3H?S\\^()8AB[V!:0J*)G,GFY=5EHJ=:$>+G,CL M9K1PY.20MJ?ZHD_G@-4>5&@TNFNC79G][>N,>B'-[SBJRW+W.HZN)Y%PWF?^HN)X'Q.]]+NT_TJQ.[&F^>'TJ=[I3>0 M=$&2LN2&E;.7BUBQ%@?BN.I=G.KMZ=94L^IAMIDD&'H#74"YZK4%?ESUBJG> MGHX(-:L>XPH4)+DKNUZ5J.6VX%_E,.;#<$)'L4O]\8Z YL$/IU#(I_=90 TM;XAF?5% M^':'52\XDI79C\^>GD86L>EL.4M^ 1[&F7H0%1H%9'>G+_#<;R_4?::?X4LF MY3T,S$W%IH-UW9K7XD&<R ^D%*470WY$JQKA23@-+2:L&2(T$M*M=*\[VBL%H8?*\XGEI\]..@K%8H M(M,*N7J,AF\6A;7"Y)O%$;4"WEM:*R36:=K2ZFI4Q/>*/1#Y-J$!M<<1#?B. M<1S=N$9A'ZP@,CMC6)+"MXTC*8@?V>XBZKVRG">I\CC/D!TO@*G)W!Q0 *,H MY])8K, M(OZ,LG:\F.GPVI53NEXJ7@?-_-#!-[Q/B-^?Z?(6Z-WZG5TZ37'Y M$?L1)A5'V8\<^\K*4ONF;)3N627W944Y5:+\CE$IYNY,^88NOY*;X^D3"8-A M4DIZA8G&$OSYXTGM_SE[ZA';!7V[=X:X24C)2^N@DM79ZR%+*&NS5YQ;K2;+ M*-0HASSW KDTY>;?GZN9[VRGC\B[\:WT7O(C-UF4M"4$TV: M&;NZYUQLY3_"!D(D\>K?N)60:$+)=7+;GQ2L$9HIIR!KJ?=+0>69Y)6_<>:X M#3G*V)#,\7[ M%3O"O+?=%_LM1(59324 G5NU[=LL>7'AC\>- $[2WB6@@=W:#]@&]1ZV5QK@ MNV T=EN&0B8!>BH_[%\W QQHMN?Y8W*#3HX7A?_ZI[V1E[,K^T,RMR>^V#;5 M:O'9,GK $E^^W'V[)9_(WW\P94GZB91+'[KQIU,GFN*$K[W1#7,ZGJ@W=&CX MP0F'KA_"7I%-$%+4Q!L$#X6.KJ/T-7S\>MK0RN.)[8W(VA=D_9Z-+*A5'VCY MS?@M.=\M[TI2:LZ=9D]\[\#IRQD66*Q?J1W2L%0^T>E3JWZ'(R4<*ZGW!)9L MA"WY;.+B1(C]%%"*R\MLL!\'9,@H*2(RH?;HK]@.P-Z%!+##4JW@DY\=SZ/V M#/SI4$A^".'H2EXPP$->Z/RYLUG@O[)<+O>-;#V5A'^-HS*-S7^E#/$G*?'4+X].7C7BF #L(F M>3>^?07C%V)^)WMNF*WZ!H&\P)$@I%Z>+&#_BU[\K!R288:8;$?Q*T9LPP9P M3!ERRC4&SIO 5^K1%]O]!D_,K51?C'D^4K#Y8S@QS:O3-VK6J3V<$%@;FX!* M?H?%@Z^B(%,<,>A'H@1#V'1&MC<$X#K1A,V(+5N?_#Y?0!]>!$< %L*%_X_M MH>/"\0L6VQXBVQK[S&_]ASZSC@XZD!XS=^#&,*5!H?4KI(R\TKVMF3$\DKV,V]/?*H:]HZ+ MZ]C5ZQT7UPGKUD]Q[[+P95-79@@>&^_?RAML'5R@OGXXP@- Z1LWJS=0!$FN M?(7?A8Y:7+>X;A6N0*^N6ZJ(NB6:E3M3<-UJ%\JX;E4L,:]!MZ1$M^K*S6PX M$^2_'1)'SQZ?I3IZ%$2/ M9K2E$(2CYXB[76]+(U+>NJM-WB_/J"[D 1RN?5IOH NFU?74::ZL M7%E;HZQ['*[#E55'9=7UFN.N7%FYLEZNLN[Q;P]75@.5U5!K#C:UL2BI4-H9 MRR^<4Q+>C1_BVV.'DX^N__+)2T0,0OJ:,/!]\Y.LV"TI:FH'4]16 M)TZ&,',RAJD39SGW5?I!%AX[M-U*=]/6#*EO*?F_.I\,L=TE:E4RQ*QN)HCQ MK+!SSMOA66$5LL*.E.8T=48CEY[(:T,W@,QL6##,^[>G,!VDV_6&;CQ*TNHQ M)7X*.V(<)#42B_QNU[$?T_3Y(B@[_$+OT&Z#-74K+#*RFNX.D\./TG+,++/C M%JX4N$F!/R7^>MY5P_JMDT7QDV#>%/<>"4XZM\;RW^[M-U:#6/IX9_4& MFL#,] FO+=(UJ>?2BVO$N6I$J:RU0S5"$WL#5="5R@&/FC3B$ERFK_CO*W]\ M%8>+_@3^8V3/ZQ#IZW!B>T\TJ<'=R"0OXC0U1BO8&=W9LYNP%;@;_Q8F!$9W MJ? _>;>IZ#_ZP;I^_9J*_:VT@B&WH""I=:6&'FO+*>("-AYL=D]B3$Z6\+-6\>F#:#SH1' MG7G4N5@8HU.QMNTT4"5Z]9RA'$X2@#Q=1OKO[ 1 MWZ.FX.+>'G3&//[6D4S2@NPLZP[*7.+7B<"_SN7-?HEL+5(N70NRLBRW9LP> M[4L9DI:4NN7PU5K3&ZC] M5J2VGV9%WAUD@WEE1D$$:\TCV. (WMQ/:@A5[.*K6P1N/MM1',#_MX4E.IC] M=ATMN)\2!,T/70*CB$R[%$S!(YC&4S)+KR)2?L1LA.+2Z-QX,U[>C+?KS7A/ M-\6&._&>;F(U]N;8N2'-KX8_Q)4;\&H6WA9;TFE[*N*270+=PFF:[UZ40AS8 M7IP2)M=G;'S6"=.;[B@'>$$+78O3A,. MZ:RK8XM$0;9.FTAW05O"";KJ7IXBL%ZA6:PKL (:M_AGWBCWHN"^T1\WBWFU M-S@Q6=:E&/>UWK=/K*W*/*997X(_@ZE':'<(F2JI@:979"1NB[;R4#007 M^#UQIK,X:=@%5HZ>@K;S=!+X\5CJ\ILW3^.@H]O7(;SUFI7#YJF'WAM8.65H MF5L.OI-4WTE*E- 4M$+Y?"[B.J7+WM2Q2Z0J*BVC=N<9U&A::JHWT@VV\8KR M42B,RBYG0UQ&Y7NX5L<%>V+Q1J'W<3"29>B,_"%E%)H M4['MWCT"6-GP/CJHBGB G"< S6N:MB0"Z6:V[:UN9EON[DF^62:\S^8(&VXT MZ05_CW5>'2W? B_@1S93<9I\.$W)D\G5.Y"DQ*1TO5 M.>DL&\[6.>G<:G3VYM[ N"0\4GC+Z+ZL?*J<#ALAT0#+;TMGB0C:W$Z3HG+D.?)LXP6$J("&+L:)6 MIKGBNT!A."2AQMVGL;*6YR+XT$NZC76*YH(-3&F3@LW&-$'4ZTIY;1DS^FI< M(^^5E>!&ND@JAB)F?NC@&]XG4:IGNHQ O%L/B:03%9D@C9](F$P3!A-;K"*)T$?_YX M4OM_SIYZQ'9!X>X=%OF4DI?6026KL]=#EE#69J\XMUKME%$H^D,>[A_(S=WG MS[=?;VX%\NG+37\]:E@@$'2 K.>/R*L*;#0&EF^L-?5$DV;FKNXY%UOYC["# M$$F\^C<+JR/-\[4'!M,E]_ X?T2HAPS0VYEZEH+*,\HK?T^"I>R>Z-5C0.WO M5RPI[KWMOMAO(4)_-?P,VK-JI;?9Y.)B'(\;@8ZDO4N6'S9>/V!;S7M6-8OO M@M'8;1D*F03H:/S@*&-#,L8[5[^ MF.!%2>+WVALW"3OO$Q3U2MYZG]"J2[T;-OHGZ@U75Z>PC&_7"7,.2Z<\EW =:VJ5;+$N?#\\O=MUOR?^3O/YBR)/U4\(9S M?F9XB/SA]XGO@@D(;_^*G>CMBQ\Q @K71R[_[(VFH61O- TE>Z.Y^F0V-N,G MDGS#0=>/["MV7S^VPUH\3.R DJ]T$1JX#_RGP)YF9EEBD1:\F=\"UF+AC0GW MY[<;UP[#G"52N\<^<0?*_>C;P0B5>.0$H/-XE3]!HLLXFO@!/&M$IJ#FSLQE M>0AP5O*&<1!@MXE9(N,0#4FP%#U:#(S,^#@=D% ?_)3(=EQF*=!B+3Z')M"> MYR=$F(Z?\%K,LP?R+^<[S')AF7W#+'TI /NY8==O'M=G=WKS$D\WK+3 M.R>&W,3K^H_MQI1<+_T%#%DL73$NFQ5AC"Y4&K]Y,4R>_-V>SN! @LH#/V6< M=B:M"Y70FBX]@[O,'%-4I8])M=X6C3KS%(BT)%VR,B>Z1MK9G1@J!>7QQ7]. MXKXH&"Z0-8'(4FTLU^5:JW<]6:!215)GTP'*MS^2Q-T) 2Q*M#36J=E:ND=) MX:)4.DM ZPTT40!!M+3J=YD'P'6.Z]QQ=6XM0GO#8H_,DRJM9#HX&Y:@2VTM MK>=*QI6L,27;TMF/=1%;T[#D-'?MC=*3W'*W.TSK#'3Q!<6LN:ZVG5IWD?[Y M/Z]/T87DQ(=66:IT:-T_YS:N=.636">G?1T_Q6&4[1)VX*1Y@X\M6Y1\FK.7 M6=?9JZ:Z)PZKH\*JMN,%4$CRW5XH.&_)S3:GF M.X8VA5LXK/;"JBX_UY1A2ZC#S6TAC,[.H&_Z*T>X6+B ZX.SO20X:&=:-+5> M;E'+]QRZ62EPF#9@LZI\*JJ3BF.]TK+U!2#?)I2$+/-LI8!C49+Q^(8LD%AO M^H(5(5VLN#B0KU S^Y*ZFV2PP0K\'8GVXNX"_.X/2JTC^S]WYY:T;F:&(DT1 MN&Y@@@*5&B?HA]/.\T$BL\P1 M8?6 \.G+QYU!!E;U$%X/_XKQ%F3]"#!V7NGHZG\T\!?>O[CT_M7>@!6XRS]= M5-(0!]].\.EU@6_;^7,%@5IOH.B28*AUM>OC"#P#!!I'1*#>&TB&+DBBTGH$ M'BGC;^J,1BX]$5(>,CX$3#7;$*QRED2'HZ-Y4^RH^N=%1TM!*P*S-U 5098J>VA<0;B"-*T@ MQ@D4Q&*5-ZK2EL3F(T6<3NHF7L-@[">D07.&E(6S5SU&=JK@S8PZ>J&^EUW^ MG@;LF+#3=91WZOY<[5,C$DVUZHM>D)UE] MD'H#2;+Z:EOZ>W%UX.JP5QV,QM1!1G70^V)=3 A':%5\DK?C6_\Z8QZ(1//5^RKDIP>0@:#G]$!O;??6$.E+,&QE<-!;6WC MH+YB#R.KWW<0 W7R!3E?NYW&OD7I=? ^L"+*_VZP+]<1?S&79 =HG<<)8#[9I^7M8@]N'^WOV)%64 M?OS^CW1*X+4.)VP4H/@.I@C.;#0%S@R_8T$K7W 5;T!>CX&S;?6D0JM'NM=V M !;*?_+@,VM 6,,>TO][(27)K^"%!'8C;#3.$$/&MA.09XPP],FWB1.R6PSL M'K!X.GSNF2:@31-$$<,O$P>7$%Y<0(=]*-EW<&TW4((=#^@K''R]IZ46)&-8 M^V&U%7GR?8O$,/Q4.J,P[6<.0&>$Y!%\*YJRJP6B%@!/NB>PY@?8$>$)5(WU M7G""Y7#A%S!$(9W5QNP]8N-DK@+LA0Z2A%\O)))\<"X8..7C7%8'U"=;&X\G M+.@)PWG)B\?UQ&PMDYB]L/"K-ODZ"%#X.*J?WS*;P#5*/\F1N1NG=Y5S:LJ/ M?O + F?A.^C+C4(%WT'N&UL\!T"^B_.9Y_2MD5TF8$QHX.T9X@7$O=6$]C-[ MR"'\_K9LF%K.SJ5E-\SV6Y:'?<:$ MY81YKGCI<3%<\=+B>LDN>,GO>A!OP^]F8#" M^2&FQ9M0GQ?!YF$7>ETGV"S=2%I"_V#7#?_UW('./X'<)KYVV3M^"[-$14'2 M+X)=DZL<5[E5E=N3==:0RAF]@2GH9N6&[ESCVH4]KG'[-6Y/&EM#&F?V!KI@ MZ.UOCG#FU,<,,'=).V#O:1&:;XP4]Q(_7]/1*K&X2LNQ] ":GEP\3NW@.T54 M5:G,[58!V@'FUSR)^;5Z TLPC+H):@ MDO?T]&D(5!(ZBK+:*M*PZNY@-_;RKS2D=C"HM*&U$1&VROSA@=G"JH]#0\: I72&VB"KE3V$CFH6@FJ+=T/&@:5VANH M@E(]UMJN"L9N;.B_4(\&MLOVHAF@D.0MF6SH(5#VF MEV'P2.^>TB1D< '(R(\QI9G=/UWF=6J=HCDC[3R);B*ICB9HU7GW:US4EI+Q M<%7FJEP+.U9#JFSU!HHB*%;EU$"NRER5N2H7XO%J1I4EL3>0#4&K?@5_8E4^ MF.84&4!'_^>%+[ M?\Z>>L1V0=WNG6$4!U1*7EH'E:S.7@]90EF;O>+<:K5<1J&Z'/)P_T!N[CY_ MOOUZ\[%5OXC[!]$ M$J_^O6!6N/; 8+HDJ5DG-%/P2=9*!)>"RC/)*W]/@J7LGNC58T#M[U?V&!;[ MO>V^V&\A0G^UA!NT9]5*;[/)Q<4X'C<"'4E[ERP_;+M^P+::]XR9 -\%H['; M,A0R"=#U^&$_S9'1&WQCNY<_)C?HM7A1^*]_VAM>1<1AZEM_TSR'IP M#CP'CV\I0T7T-J-(4H(T%+P[WE&="TY>P,D+EJQY%T->D.V.5Y*\0.P;VMI9 M+>>XUNZU+D]AL'/.Q2OSST)T)>D,N.@NMBW>PRK)8(72N;UKW_J Z&&DLZ5$ MT-K 9_GV-_)I0I_(W"Q8ZC:^N297K_TUUUP'+TP'3U$ :$@RT\$F&M%Q'6P+ M#KD.%M7!D]1+2@KXJH*H=64?/!(3PNG<:*3;OIS2MO)JHIRD E126<:R:59N M],'+D%J)JI-D14H:*U87Z\JDXJ!J%ZA.4C IZ5BLKDJ5=_1VU;:52]HX!3:P M.0;YNSV=_<2Z8^Q)'CB[,I$#].,DM9^2 1ZO+D@F+VD[3U2=I%!2,L%!M 2Y M-<5''%7UHNHDA9*2!:C2!,4\,^:9+FSFUU5V\$OQ<&NJ0,D 7Q9[ ]6H;$OY MN:B5J*GIQB^+&@E0H[3EX,-14R]J:KJCRJ)&1M2<&15,J^^$L)GCY7"]' #U MDUP%R>PJ2&V-K\E/,+6"2CW)Q8FL(J@DE9/\GB>H3G)O(B,KE:"TAC[HS.GY M&2RR?9?Y+?4.O3C)U8^LH['5%$[ >IZ@.LE]B6RP'5QNRP&)@ZI>4)WDND3& MZQ+!--L2JZEZZCX@QS.?)$-/775S=)$PF^ M*=S@?LM7)DV@T&_!GL+N.&^P8/_1D;S MXP]%:,+.40*_IRX>N4Y?=9((5B]"%%> .V,T/WM$80.+ 9+/]5D]IG[Y\K,V+2[5Y M99;VK)E=5Z)_0(=3 N1[\1;;"NZ$C-PB< MN5E,K>+<(#)[F(<8LS=0]+Y15X)6PYT#+J"5-L/8+WA&H*.#='9_REJ'="K? M$AL-&V(F_O!3>OS[)?##L+0IMGH#31%D.J\B29G?;6J&9NPU+X*&ER M51&['VI]K3*;6DM2:CIE6>>K8>>7.:8O,:PX^ MRAI8M3?0S;[>%E:'2X_52CQ66S9"(*MMC]6J&BB980JZEO5CN(_;N!%>!TB+ M(K*JWANH:M^HS%_+O5L>=ZW9JNKMC[NJ1F^@Z8*:4UK+7=O&K:K>YK@K5C+* M>E:-NVIB;R!;_>J=%;AG MRN.N)["?IX^[:A*VD;"LK&_*XZZ=-Z_5XZZ:W!M8ULW'70BUU M>=QU5<>TMH==-07C [*@6UE&&^[B-FZ#M99&73458=&OSIW%?5L>=:V[[J#] M45=-ZPU469"E;*L>[M@V7UW0XJBKIF-C%+FOGYE3VPW+RJ.NE8UKXU%7#6D[ M-550=2U\]:SNQ9*NOGED]5F?#KDH-8==\EKL+#"&SY*!##H M>,G"HCT*J&NG#,/^!I'D!3!&:F9?4N4S9XQLY:#4QF@L):V;+([_!:-);L& MC-;" &6H&EO1F['8;']TD#/9C^$1HU SVE(X1BRW%1'=F07BDD>$L9HW^(7 MC?7LG>T>7M/S$5>AC$0NKKFXI#)VI/MQU8^V$Y!G].W0V9X?VY+6!,T0.9YW M(YQ]D^]N)+!DM[JJY[#_, C.SR,(4W8"DQ-W+R_#Z!"GM?J%T3*OB/5U6X^AEU4^ UNW2H(LMZ6=.L]Y.[:3UC9$ M2LCY(1ABY?QBCL@6(K*(4](V1,JL\:TA\7S,T_LA*WDA!WDBYYE(M[M];^U: MMI+&4%&U%' _+$&MK:=T"P[A'(;YQ?5MAJ':&ZBBH%MM2>SD,*P3AG)GS"%2 M,.N"K)Q9;5U[/8UY%MZB+_MX>66Y3(-8\3^>]E!#7)Z'WU"=514.@$6"X2(J MF9-%:^B,847ED8]S1F%%CK7F46B ZR'UE6N MJW5&.'87-N'/*&3'B^VD]F$E,SI=,!6SEF=^R%*NW[,D:^>9+I.5WZWGDJ>I MSN+R(_9CZ+MQE/W(L3.K+;5ORD;9Q&I5[LO*[E;U#>8P[QB58NY.8FXHPS8I M@9@^D3 8_K]>. OA;"#*B@1__GA2^W_.GGK$=L%=OW>&6,$M)2^M@TI69Z^' M+*&LS5YQ;K7:+&-?YB%#+'FX?R W=Y\_WWZ]N17(IR\W&V4A.[(W*\AZ_HB\ MPH1&\R\SAIM)0=-/-&EF[.J><[&5_PCG3R*)5__&DR@KM+SV/*R 2O8*0C.9 M[NL%[TM!Y9GDE;\GP5)V3_3J,:#V]RM[#(O]WG9?[+<0H;]:NP+:LVJEM]GD MXF(]CP:(#O@M'8;1D*F03H;/S@*&-#,LN?]F!CU><%8ZN[;.HP MZ):"893T-^!K1/-7U5X-16:K/LXJI16Z+XEO%(;Q-'EM2]68876S:FP9?PAQ M>5!C-T(/)"F8#2-P)_%'WV/O&L$/^ GV+A*'6/*(K__L@I-V!5+V77PD>Q:K MC,4W3/T1=\?@MO@O^(N7S;B(O93X!12DZ7UPB>ORFS2E7,7646J_ M6CJHW4+G!6F5"M(NILR&%W'Q(BY>Q%53O.M7Y$K 0E'&)U") /2\V*Z:9XU8 MA.Q6_-W;UQD=@F>&Y!#2?G((4^P-U+Z<#9\U1&+%49"BP&P5"B1$@<)1<&P4 M6*U"@8PH4'>BX.QO_/_CXRV ZT1O_ X_P:F74I7E[&--7%KE 7GCSFJY1E_M M:'E?=24OH4$@=OGF@8D0 6C8>*2O@=:J,ZA2OT$1;H4[H^6\\)%@8[Q6QG M^PL]*?!CTX"YRMZ0$H89\AM@,Q3(5X "3 *37UEVOJ,X$]>VND(L[2266$"$GFABVS@^X??B,UFG>3Q M#@&5-M*ZPX0HXW)?"-&ES]0-67^=D,X_A'*E=N#!H]B=,XEG8 6P"P4JL.V] ML1.(\5.8MFAB%=$3WQW1@ 0TB@./V"$8"7AOD'2P #&AY%[93UL^XH/RL)3C M(7Q3R!*7;3)V4+738>R^6%>R>>2'&A[V%Y(9+GHIYU^EO_@@+NHMC8Z\[_9? M$4\_2&7O(.N+[Q\\2+4WB"9@YZ\P72&WTF_'SVL0G[&O%4!/[0"'09PD.QX? MO,B.[Y/;!/"I"B A^?R-?\7P0<#F,A4^0:DW=.,0]\#MM?Q+2D)%4*V&02BGYLO9= Y]69QM/L7L+>RS :36"J9=OQH7ULI!T? M>S7\!([DDJ"V&!?+LD^?I:%/N8T0*&W6EVQM3$5A!YSB"\S78/)TV/?W.^9R M?'WX#?!!/1K8KON6V$9FJ79O(ZI^^FU$[PW&Z+BP1.7,-@%8%1+GYCEYML# MG?HE8 /A^YW(37P8L-_4>:8KZXL/7EWC/NG;VF^$NG08K3[O ZH*<[KWZ$9^1OA1A6GN M$.9"A(]Q8O!79SYR8+IPNAI1UWX#>;+)SZ)5D[<0:SQ#\105!M;?5Y3$UV0P M'W!LQ>1@@:M)O6TF NN5F00PXP F!*KVC#U$859QN*GQ5 M>Z.-5]CQ]1KVH&LLO>C5%L7M%K_,IL0)UU$MP4_",G_Y]/3_,HZZ!NV(_ M/:%K'%'R JXN_$D<]0LH2C6DOJ7D_^I\&A+N)BNII\ZQ4_5F/Q0(9Y_CO.=Y M@21-#"2,Q^A?C\$_!TAF1%AK,18O)NS%'__V3[8/_>.RTN/N5MMD1QDB#Y%7 MZVV_X-C6)+ZQG*7;OV+8Z#YYL*_'^&)XAT&=;W!T3ODMOOA>=X\O>!(%*RSM?_;*'@K9:/E:'-&Z; 6\LQV^ONJTS,9:VWUC4)JF";&7S M-WA6PQ&L=$-U+R5A6MM18A 9G+%W/YAQ58DBYK!3^#IKJ==P<9*KUWD!5^U); M6MYS';@JFF6W5=IA9YAYT-\QRBIP8 'V0 M33:Q\4Z_'77EE]#A;T_<6N)QZ])A#TWL;-S:Z@T,419 TUH5M[X4J[V.G*Y$ MIR414&/VQS7#$&+>F]@675D&W7+N^YLS'H M0EUQ> QZ7??DKL:@):,W,"19D+0LL39WIH]@M>5.QJ!-3+M3^A8/0O,@=/NL ML=+5(#1R-TJZH!A99XB[T$ .RCH_W[PGDI_;^"7]\N%DNIJ63Z9;C66QX#'P.DK:$0>*?72.)- 9G$0 MQLA>&?GL 1$-IN&"O?HIH&S2X08W+XX/I>IXL9T8U14Z9/9[M\ZYF&Z]XO(C]B-LM'&4_N52\M(ZJ&1U]GK($LK:[!7G5JL%-/;Q\S'$DH?[!W)S]_GS[=>;6X%\ M^G*SJ4S[^0H/D/7\$7DLGK5*89.E,+_]H&:<:-)LBZU[SL56'DZ84R*)5_]F MC*UH4*\],)@N2;8 I,ZEHQWGF*6@\AR!E;\GP5)V3_3J,:#V]RM&T?O>=E_L MMQ"AO^HI@/:L6NEM-KFX&,?C1J C:>^2Y8?]V@_85O,>W"P:X+M@-'9;AD(F M 7H7/SC*V)#,\3&Y%LGE[\U-/G67D0D+N&.BXAL MC%=?B_$J]<1XV<7!_#PQ@N,]>[78Y92R/&58O8$I2+71&C9'%E[#[1C72ZZ7 MJWIIM%HJ@J]FL@]/D,?(\V]HQ:+0=@PK2F@J2V)9< M6H[!VC'86*^XNC"H]@::)AAR9?>_SGSNCB?_79/(CVP7[[I+ \;*S]*;X^4# M'=,@V(J6WYUH\LD# 3FCV'9O6#((K6 M&TC]K%%:I.-M2;?#ZX^ 3FW'PV1&#%\ZZ9<0EC*0M(YV83VV)CKV:[X>7TM5 MW'8]COYZ(D@8[C1)6]QR58YMS[MV58ZIJ&/LAOK,NJ'B/3GV\P8C04>$]9DF MOL?6!L;_G49D%F!+ZYPNZ+AN^+Y'"M-DBYQF3/IC0"7^/$M2?.(0?\#?)-?Q M++EU*=SS[\7,[^;YW7Q;+M%JO)N_F%M'?J?-[[3YG79]YZ9?G3$EF#;S!L8H MK$3\T/VJQ-63Y!;?%N-G.0?%Q_T'Q<=-MW=1^K7BW=Z^SN@0W+]O-)A*:T=& MF,[P_2@.<)V67B^KS]$R![&F2@HY"I81K!:AP.0H. D*S%:AP-J/@DNX$/J/ MCY5]KA.]\:N@!*I>6K.^\RJHOJ+H75A>+LY7.UJ&N*[D!8Q5L3=06A'S/,TJ MON,D+\VBWF@EZC&GH#*=%D<]1_T6U)NM1+T,MIZC_H+"#1_P HQZ(_+F4+AEX:2RSI@F\J!POI\9+8UDP3>!%*XB72XAR?'7"[U?C@%+BX#T* M#2,2@#AYR*/$?JHVBG9 4M0;V!J6QR M*Q)L.>K/$O5F"U'/;NK:D5;>!M07R"G.IW9$>>[GMI(,D/?.7,8<=JJMTEZ( MR+:I5HN(\DFJOO@1);\2YNI*/Y%RN;:?O*$_I=_LUP]..'3], YRDF55*]$6 MD"DR@*:OX11)M*P?%,WLYZ]:"=8M3;/'\6IZ.S-.1#SL>W,1! "O1;!KR MH4F-S2=%=F!DE])K+6',IB 6VZUR+C\W2IJ\*;8[Y%"*>":?=F9^"DW-4PJ+ MS+FS+).,)J&9%R0]V[F^LSP#7#?.53>V4!@VI1MR;R I@FF>$0\,UXUSU8TM M-()-Z0;V"!4TS6J):EQ*I_2$<"PZ-,^BDTWW&G*AF!2OO=&O_K .A5"1DD^6 M*^\5-37*J_/XQA%5S/&H&5$:(DI2*YM8CJ@6(JK8=ETSHK";IV!:K6KF>3&! M'#^ 'SV>'EDU\I'(L;HR&+V!+$BBTA(/EJ=?G2!24!>63#2L5G7#RK'40BP5 M/%G7A24+L:1+;<'2)=SYS9DS3\E7\6XC M?,INU(?"1^T-#"U[#\?ATVWX9#;DAN"C]09F-AONZ.BYK./S15Z.-'M\3D1: M OAZ;V I59#/SS%M!$[I\W%IX!B]@9:3IL"!TVW@E-UPRP/'1/+%*IY:2XZY M![013LN186,F(S_&XF96[,*;#%<53;L5L,9\B+I"3GC?: F&4E>>61VK>*+C M%M==KKM'R3^I27<-$717%Z3:,OJX[G+=O7C=W7/S4Y?N2KV!*5AJY:N>$ZMN M 0*M VF6;L=C"A)YI@N)(ZG95PH/&#JNPVB>MO L&7(W>9:6S$J$)N@B(P<; MJ-(1&0?^E)$KV5-8_BAA78I9H]8W8L]F[IN3-E;]K?_0)^/D8G+UD4C/2B*? MS **/Z:_L4-BDX"&L1MEZ)LX9]-9T".UA/5HD3E9%'%XK^@4?=1H@UDP$?.V+AD3=!/H@DJUP2N"2W3!.,DFJ!Q36BH)U[^ MG72KG3Z 2T#MD)(? 8GL7_]((T(84L+ T_N#K$.11(M+_/Q%I=4O3A1TC3A> M(!YE 8GK;, 5<5M_E!0(3%# M:TY<'%1'.;XW#BH5#R.YIP%FI^>J!3*_ M][,]!#C96.>Q4WUSWH<=9%[H9^L_.78ZCYWJN_(>[%AB2^S.11V8[Z()#2[L M6'ST'9<)^7KT9QQ&&(S(S?VPI-Y K![>YJ>:=H*H^M9;"$38W[66CR6PLJ"M7IR;M&_X\3):%K<<:/UCZ:!6YNV9^Z. ;W@?4M7%EEY1=[]:9V5(YB\N/ MV(\@U3C*?N38_&*6VC=EHRR]F"KW944Y%9/7CE$IYFXJKX(\4V4/#&SAG.D3 M"8-ADEMTA21.$OSYXTGM_SE[ZA';C?Y?[]X91G% I>2E=5#)ZNSUD"64M=DK MSJU6[3(*<0F1A_L'UP.LY MF%MUWK,!O*OK,*11B$67COWHN+#MTG +K:IE=(]6]1MH'#:N<,9@+C"WT9_. M? \%CL+WXP!\T406JR1G-A,*2XQTEV(A+S1@A*D)06JX8,7H!-6I(?4M)?]7 MY\,JNMO7JL*>:76.5%1266_S:DRB)PT)%YOBCXX'&ZL?PR-&8>8&/._,WWF" M2C9O3G]:5EQR&0VHZ[8$Y';\O2_5_6T[6Y7 6'4\'11RJW=DEY*WPG#P!9F6 MDK"9]T1[9".UO@/YJU:+J<6HZZ]9K.#Z$)[&"E( M\EI:2;Q:1@SJ-*<1>9C8 ?T9EV3U#3=^6+8?DR6*O8$N*&)=_9AX4GZ; +C% M=K<*@%)OH FBV18 7M0)Z7HX#&*PZZDIWWX^/KO4VA/8,:#'R^I6+ M.NZ*UQWV00E7412U-U $M?K!E7O7+<34@9&1JIC2T/@JW&$^!3RV" M ?Z/CK@379L3_J.G#;N&M=FE)FH2RN'V1O(@B%R&M5SA%!9RWL8A"R$ MD"IF*= [[?BV-X_JEP!39FJVJ:D0SJ40L'%KRQ:AK*I(V(M"$PR]LKDMM5P= M<($O%G=E3?1AN)-Z T43X*#5>MQ=E'?\*QQRWI-GVTV+:6RLX["]X:4E;VPG MM*O!4O]G+M[KN71+JX^,'HZF5J$LYOYQ&[%4UOK6@"5D:!),XWS($MOK*'_S M(]MEC7V+.\L-.BJMVWY*I](6G'R[#423>\T76CH\*:EP)E $6:XKB[;59P*N M7ER]#M]^#U$O#8X^JB JV0VW;>J5[L?S$D6U6:U;-.! M[? K_OO*'U_%(:WAAO/<0YKE-Q$FX+OQ;R%-3EFEU<)D(T:_;6"IO M:RMCB263*$HVF82W]FOVS#$+8%'2:TAO1.RI#Z/['WN!WT;6:6[O R2_B=[N M7=N+T!GY*W988BO\FR5@?73@^^BOV&+Q,"6215 B4Q#U%O@I_,+RQ!;Y"'"3 MV-E1-EMP=KRHJI?MR=55BP\OQ+\I?KVWHE ')GUN&"I^AY7% M4!8F2F]@B=GZ[:XZO^V-*B2Y(4W8SL+W5.>J$06MZJ*A2H6B6UGM#31)T,UL MY6!IU^/T>1/UMOJY0.05M,6U( _+O25!EFM("FU1-G77;L"_;$GNVV'$"R9X MU-\IJW7GAT,3E*J)YHSLS4'GA]*61N\-3$'-H9(J[16>I'_841,'N=9RK6WD MQ%9::XW>P! DJTI,[,1:6Z#I7NO[[5RSOCKSKB-)QN>\J95 7BB9V"-6(;!! M2+_&0H^/^%L9A,&WK&%,V\38&A_S!@=S"B5]"26LT3?[V:@ 8&Y.!;LY?5; M_Z%/QA2P .=:=(%F<3#S0QH*9<P]Q-K0P\B.Z,:8\0ZJY+CE M&L>MB+V!U<_>0JZ-&_X#K'EK(^^33V/B^1&)(X?1#@FLRUH.J%[@2]7E9VR9-^&XTJ_<>OXY]:IH+;>@-5X#)QM M6BH5TE)2\DMK-1$/- &78LJHZ+A:3)<^8<<8#T2?Y@V1&W]$R1/U<#W<-^), MFHOL<>9$_!GD?XV+TV)IK8$: +Q@6K2V*D]8Y\^.0X MA$_""K&>7ND)YV4":V^# L":)7W?P(Z%A/5^>_*]C19C$]M[@G$Z*%E_^)WX M+S"%<.+,^F2W>81IEM5!I4X=E/;9O;1EVEQ']LK8!N"'\>.?L.(HW-657ZX= M* P\]V7B#">X03Q2UP$ U+0!L(NZK5*X1=W$A?[-0P!<,_3D20;99?O9R,-" M,*NV)6;/(B- \/8Y Q2& "?T%]PW86\C.GAL0 %[$4UWST1OMCY\O9-@Z[V& MW^DF5)8RH&%VNT4#^VP'CA^'J0'&5YS$@* (X#U_QH$3CIQA*I'T*Y;F9.7+ M,L]>&G7Z"O--GIF,8^J'$9G!5P?L]V_4#L+Y6N,JYN@$/O'KW^WI[*;+W;=;\IG\_0=3EJ2?2+D^F.PRZ(OO+98IB4\N M\U2_T8W6EY:B)!8'! EF(DI?PT>O-\1,;HB3Y[%EO9TWA]CLGKVZ3 =V\=PR MC_DD*9WV(TF5\'C$E-M:!5-*ZV8+TO[!CD=M,GVO>C73- MA)Q!>TW>C;1"-U(NKCWBDD[1O/6D0?9/WC,-(T:KG7@WS=QSG]LM3+G)M_N> MI50,9/QF9WL>3)AN/PCQ@%_P<9 M!_YT<04ZC(. >L,WO+@;VN$D#>#/%SHD$^KR#C('.WL?$S'?I%+^%L"PDJ?^ M BN"UV _4UR*;_9KZ7V*59\;N]5M<&4V^N.#2Q417*K6 G!=0@PKN9Q++^78G1PG-RBQJV_1C]TWOZ55 M0F+VUL@V[.+L!=W&4]'-?!^>LI"1>P--; '_ ?,23;H\H!1>@.E#?PHM1)6 M6"W??9.B:W][@@ROU>-5/R<)4-3GO*A8K:=(-7?XXB5[7'DO5WGWW':5VO@U M.%RH64^1:R?73JZ=S7KI]6VR[&Y:4VM@G&U9<>UZ=<2.!]0%S[Y3)?)VN_6,^;3:8K+C]B/,*DXRG[DV)GEEMHW9:-L8KDJ]V5%.54. M]XY1*>;N).Z&,HR3^HWI$PF#85)M=H69L!+\^>-)[?\Y>^H1VP5%NW>&41Q0 M*7EI'52R.GL]9 EE;?:* VI_O[+' )'W MMOMBOX6H,*L5/Z!SJ[9]FR4O+OSQN!' 2=J[!#2P3:=%R.]9[1^^"T9CMV4H M9!*@F_+#_G4S>@-6I8;%CC?HX7C8:L#>J(YKJD:TX1$*NM-X0'D;8T_96&^:5^[&''UR+N#FAG^W0&5Y[HP\. M.CNC+<6(JIDS23,[R?87(7[#6EU_.O,]EKV$V4SX8QPMJGD?42+L%Z-$)O," M15RZ&9;PHMS("PVPZT9:K!ANE"J6Y(/9V"&WK;S)5IX7-NY]%"]LY(6-O+#1 M&X4"H:]#"L?PI>%*J%=XR2.OX>,ECUTN>3P&MVS^C)E78T=^<% ?U7-JI-O> MD5U4OX\OM'3E;=%$WM;-M?2E3(^1K%Z UT33#E[C]+9 MV@FN">>J"?N2 *IH@B;V!IHF2 K7!*X)K=>$/?6IU31!Z@U45="L+-W\:33A M[(\9'ZCG,T[':@>-4SOMK?O\11T-?F<_T!&Q853V$PO^3\&,L%A82/PX"B/; MPWD)2>2?US(GUC014$FO>R[MZT387V*,M=Z-V4U3>+>4-;MU*FV!92Q-$'25 M5S2?*;KV>++-HHL5O@B2U);]G:.K9G3M\0Z;19<*Z-($2Z[,>](N[Y%]KZRU MW FXFR6\X)&/[1R&$SM<^@&,^9\Q0#_\.$FZC. M=10%SF/,$A"^^?.D$SJZM]]8M^T@P#8,C$PF3W&TWD#.Z0Y\&%L0KV)M&:3V MTK4U 2D=;'%.3W8.J;. U%Z2LB8@9?0&FIQMR'(:2-5YP&_]WG[_\%LHD*_I MW]=I5Z]F=^P),4G>)?[]BD,8WSU(?VVK(Z8H"/Z&=TC<#S5O9.7 MPY/5&Z@:Q].9XJF.;;P4GG2\ZA3KHB=HT_G\K(+T:5)^E9-ZA1KMSJO580'\ MM#HD$PLK&P;3)3AZ&8)JU'6@/SV30$WGLDO&Y&%A_]HPF5PK69K",VR MH#9,)I=1@,W68_)(-.DGS';/J?X[*!]EG5@#EV*35>/@5(\BIXK+&=I%^Z[ZM?G\'/D<^8TCWZ@'^<@1UZ]>VM3"R\K6.VL?\H.7O"+E MW%6WG+N6PB1/>0U47N.,,J Y]L\=^^4-34L_%1]"WEUH-ONIHO!GF!WVUEVRO'KL?Y M\_8^BO/G",*X]D:L<_"]'T8!C9RD MU.9GZM&Q$X4?G'#H^F&<&_!2LYTB##7;*>+KXJFLHP@KVD&.AH-:8K OZ$!D M[7?P V_PX(+_U'_J$3F>N_T9I MV">W '4' UB+U\@0WCZ<"Y&2>(9$%UOM21+:*W=!^0'6W:.CU96ZAT%^ME^= M:3Q-^@JM+2,8DMMT?/!//(XLC,F5O 2+UAOD))^]PT AP,\)6&\.@"1;;8&$ M\>.?=!CA]#"TZ#I30", "Q7="2=T1![?B&N_)#7 +Y1,[6@X.8HHTMD&G_$; M8177?I](X&[,?IDK"!UKS[8*8K'63*F-G\+EE8EZK5E>^3:S+S@WD,&=4B65DG)(Y'<"NSO3?"N%P$\C)Q MDE_-N5Y6HM$^/!,^&WRG$6(%G\2T;1;XSPYL1@PXSG1*1XX=4?<-),,Z L(S M'"\5[FOAECY(AMF]ZYP[P'C$^LNOK\/N!D;\2J6;MQ>M'!2_ M4N%7*H=>J8A]0UL[''8Q]%WR8F7GG(O?%YR%Z$I>LG#17>R%RTI(8\L&;1^H?Y38,\FSO"3E^ #Y)(-W)IR M]EK2E+/7DLO'D97G'70IF3P^YTOE75'CYC2=/?&]$P'NA@66Y"&RHX3O&*]< M\(HEH!.\'7ZFY--ZK\W#*R["NS$H.AZ>@S03X:L3?O_Y#?_^"-KJ!SE+J70O M!H\E%;/D5@SI#;$. @08@B$@ 7VF@(_YM=4+!3.*UA)#\T.\*P8;8^/]4_K& MM-@"RR%6N"[Q5F48AV!*:!!B(R/XP(L335C@C;)+Y.12=/&]_W][U]Z<-I+M MOXK*4[,WV0(LB;=])U78P1,FLFDIBW$C].'W.[[R#Y(L>13=+^)-/)M1+G(J_M(*YR:U^VNKYHO/-&_<\ M0S>(:]!PVG-3WM%)(5P2*;+^IW)2PB5Q0)?$Q82TBX0)D3"16OO]_<.#_'!_ M/O;[CPN0:$_)$KO9(UF0^SF0^UDG?G"%<5M"7U]/9VM"KQR&T/>9 MT7&:@_GUY^!7>NMM]3=S?;6?K6]F]>I#/17]C;,F#33>I]/?8 M-3S=X'2$!:[& Q7RZ"U0X/]O@U+A;V=P)1'3_^VJ M#40[=JG"/YHG*K7D3'8Y0K7L3'!M>[V3U;>,UHQBI6Z[*]T_/SXV._?-G-1Z MNE^\7*MEXT_L=?B(I-2T@YKNDQ7'BGRB13,IL^\U;W;R#[8[ F::_\P2UY'Q M\JQP"<2P8>L277(L2G/^L]E&)<5!Q?XY[TX;!OB/E*IAZ2 M?EQVP>V)<^E5/'GS;>SW#T(Z2OE7?OP :+,1/O15%=1[Q4FW7=N"R3EF43?._8\/!X*D= M8J186-NL).T,QL*_@W;)RQ0WR@W>\;&N4#6()S$A"\M#*R5:50+R;_*CNQ/.N!Y\_$K-3/,Y3G>/$[ MFXKHR7R*:0N/P"*\V D6C4F04R)LY:?,?%@Q?X]FOKIR]4$Y0.5$ MX<<782M[(??UU;>V)G=0EI0#-#+/)KGOG')U'%5TE\8GVR2$%5.>$/:OW6I8 M=M#\3O4V ='\XL(D^"586[82]F(I5:M>3"I;R9XML8=+\:?OE"/&7G$&&CGF M+S'3KCT:(0.2'I!=\*6\0^4:3TJ5;VGP'8 7_ED0@(FBJ7YNI2SU+*LO-/>ORN^ M#S7[ )694B=(D;JW=5J0<-*Q>;XRO=\=\10C55;*F(1$K0'F,QE63B+Z#P+< M%LM,.EAM,(< ;V3[E.$[HH\,R_#@39(V)*[!U7\\_!^LMBY_GVZX%-/6O'!N ML0FP#C>FQQ.?8+T:KPS/[18N?X 7?P3\37&$9<]50YQ5,XP]W':EL1?97N' M856\J"AU?\#S/"I8?CII]?6FSX-0LVX>3BQE9>.5%C^T&+S9IP7YA-R"7 M>F/37[5F?-!4/@6R_$M%41,M&17'/T:@ELN9$UEP*;"",<"^FD!];[07V1F+K%JE^VVZ72/7;:KM.4JKO MI-'U,;BSKVI]V^:"I&Y/?J;6T+K%I]8FLSX!)JE"7U5=W_AD!6KG)82\YW[L MLVT+"M7+<%5S1?D !872UX='7#MQ[>+7KGBZ:U?!:U=-:(\AKIVX=AF_=J73 M7;LJ7KO2&4B[%5Z<>:_-SY7.JVS@*0G7D<>+=E,N+5CO\_C)B;PI+9^.I'J! M']SRG_=#8@UX8@3:=C\:'AFX-"C^QHRU#=[:AK!J<%;X([:$QR\\1&;Q^C%:EGUM?6FCX*_H,<(64^V> ZZ+'[ >U@EPG_%"G'G!/'C#K4)?$ M>VKILQW1XCOB1#N"3@GR4-RP7B"&_FO8OXDW=O*'AABRK0U++Z*G#F/P6;7%D>'']K(YT1CO!X[NH]]3&_):CVM/*8?>012=9 -J7LL5-F0MS.D9\:P$89QNX?(8$4#4%W#I M"D6!"H' D9Z!,\;VF(^$PSPSR?,\=P$X>V"-3EFC4G351STZ0\PX(@;@2<-B M/^M NDCF1K@_ 8U(*#GFX@R"_2G,MO*MH3@;7L:6<9D.XS!*D>25\KO^>S87 MI:P'/R5S1G8;0SXWXQ>]:8Z%721*)KO/"1\NL(4RR8Q%?'#"#S^?S=F.73]^ M$;C4Q.?T;+CFK'!P&!Z2BV]Y3-)0%R2(1A'DE; M&49^./ 1F6&'N>".I)@.3@*3X,2N M.+ZAH9BA,V&R?'?&XTV[\')&0P* M(Q@K.?!\S:!+3 /9S\99/&\ \!->(!8M58ETZN-/87YOU&*AC'N!T>T$1;,= M1!7A!;78:<&Q^93'"ZO(\JD^G$<.&?+NV;K(LOPH%88 VO M3VUX85*\%^)2%%N^=RN.^5#'_";XG#\FET;P#UFC19$O8H08,ASJ(L1BX?/@N "89 PMQ M@SA#;]8_>(YW1ESU%G\4E'8*2IN)(X?5Z@CC&B/,ZPPQ52?&1^;9"*R!'M)PQ)11#.A*[$B(N[;8FTU1A5E0419 M$%$61)0%F2\+HIQHT:(LB"@+,'-.8(71F4@@5?'O.6(XOQO7#9%&1W-0JF!;B^'.O M7HM5MJ0E"Q*V<(HY@_"[FU/@>F-N+S0H:Z[!4#.W[814ML5[(I/@S/Q_8'5E MI44W^?"6K+7,L*O>,MOCP&5JP8-+1O35=K]+[U19*;X_]!+63A@8Q#CTLU&6 MJV?X/K]R7;3&@KH$^_X<2[N+/"PO("]U$)/\6QZ2Z;G=M=6NCIBNO^"X>*61 M(9KJ.U'QNMLRNRR, T3.KO#JG-L.M\>N-R96)"BZS?O(US$ 8,YFX.QHI$S<]W.]Y))P%UO;2:TF=8E&],HG9ZZ$4(EPSS[5+'YZ@7)U*0G@,3 MQ>S=B4[\74DSQ-8E$#VF&=K7XQ,M)*22IYH>FY-0.F)E,+S&UL (;$HTL!@. M;%O'!>?B*\5- G2!NJ NF0P8 7Z1RK^&)SYG^@F?MNZFXZO>?%!4@3;4A1BY MKE"!"G"UE'II8ZMW2L[D)8EF?P: 1!LB#>$7/4H!/\&A!ZZQS^W'WZ4O7]JY MX!TZ10,QWA^7#EBV-HQSQH S-&88#J+6^H8[8HR!(>J0?1AN,(OPRAI12($> MN/E8I%2-7\[UH2R;G-NZ @M'=V#'H@"7D(^=#3_U"^IF/- D\MG"]Z.0$$U M"9VF_A!UFA%\8^BMNLE<%#);T>(.87?I" M;KNY[AS3"!//0DSCW 2 Y(2H7D%8S5"0!R/%#G MO43XSH+.9^M,V>(VJ.!:L/B]*6>:1&/V%<]WQQK7$V#@JXOJA"4Y)E!ZB-*< ML0NOX&Y%CYC1G#VJ 7%B[9=9CVL6(*'SL$"LUN+UN3(.S-M@?.8':ZI-+8_& M#&7X1+XXV,L\5K=)6AT3%-:4E=")C4;G/+OE9';+%W>.,<.27 N>W*$##&=$ M+M'-?WY?2*QZM=7/NPJ9U$WFW B!1CL/^(=:T(2*@=6'V! MMSLTK"MU5A#KR?:EAN. "$,+O_"0"P^Y\) +#_FF'G)5>,@/YB'?1BS7(K$L M_.JGGLHQ_>H,;FW,# X,KMJ-SHO4:K5V1I>*D@%TJV MZS#'N?0[6HA8Z/:9 4HT*"?FOH7IA ;N$O-I].C,7!LXA)C#H^W:DZG4#8,G M8AD;&G$X^@[JES;-68CI;'>#6J;1H&BO[V-5.:-1N._!R)AU*8;_\<5W83I' M]):5YQ5_+C=(AX-T">V9L-(>"ZK'N!-M]RQF52EEX;HH*Z]+\KF)Z[#F.KQ- MZ5==;@692L^O%K"=H>%<'8%4JUD@574EJ2YO*I/I03K.';4H,'F6E)7E7%"*A$M'J15Y=@6 6<>QM]SD!62S%[PR+QX2$=5;$H*G MH_[\C=JDP4'J;U1IY8UJ1_&@L8(\#S3(DNT&A=_%=5G)[1L82!(+E SB.%@5 M&#(-P[#8COHV"]!JQ2),V+=M]W@"8J,J5.G2WO^]^VH3:RK!;+0\K!#==S>\ MW,CT]MQN='F-BC(T>H8/TF\6;#.CX[ WP3E>:=[*@$7/V-J8)P!CU N6IM&# M @O$]3>(K,I NO\[\OYT<>+S^P+$6,?RDQ\2",Z[86U!DBLZK#@W-V"A<+0F MQM\QSHSU":56*Q>$SVT<]YSB$^REZ02+I14G.&,9_"B]\$=V0-1@,5"LT4OD MLI4"+T0D=Q>*(_*AI\-,\ M((DC$3R7[=GOPM7F02KL50P<33!+"4F(IPA@J1S"RS6P3R(.<<+(@'58XN@M M<$38@ @;$&$#/QDVD.0-%V$#Z4ZL3]3DSBLCDI5NQ374NREHG8&&ND$/N5UW\JT6:YQ;AUKE!MW/TXV? MMSB1\J^1*6&E\$OMQ)_&"'>W5@YAC,7&'6,[8MU MA\GB]J*VMEU#S+6[<-+]/GOF]A'C%>S^^3&W!\/USI G/QCF4JD <0F$A$^O MA-^\F?#9T\$#.H#.CPH^@8* )?16V3/]R&H9?8T9F@[*=IYO>ZM= M^>YNKF0T.S)TW:0G*,&!X+584/:OB&_(2V&S0_?>BJ73G0SM&RQ]7YZ TTPP M< 4,?=^YN;Y^?7TMP#0+ _O'=4,-N[ODCHH;33#"&&KPM80/_IUID=%6Y)L#O MU6^*_'V"P"'?FYKDU=-,2BP.(A+APQT;E8L58N:U0!]HSQUC@RFE&H:Q7#:6 MP,"?"P43:@ FB@),"# AAET&F"@)$\0EF2#*E5*Y+JN*+%:E9@&,Q$'#,2]U(*#!)4.#(D*#X_"*2V&3 AID;5BFH($B"VQP2=B MNR>4L@P@ 3[2:Z5RJ:3J=*+(%8X.5%F1I>9_QUC&IV4AR:(EH6T2W@N(!):' MF9'A6?-MUH>GCM8%I?3/?PH0<R#YWC?$$D4>6,^$D(% M.IJ'%D^VE<=276/?=J>KX,6[YL@Q[2FE[P72$'8+$1=Q9*XKH$;6AF4-:I12 M##6$W>)X=HO2+N B+,DNP(4P8P@SQI'9K, 661N6-6QQ'">HP!:I-&/$4S@4 MN>QZX\B2,0\U,'_#-;2HVY3TIV7X4N,56\8(/XFP7@CKQ:F8K4 861N6-81Q M@% C@3!2BS!"\X6JU !;7.O%4K%6E^/!FRLQA8 3.\")?UTHG"A?R[5+-UB( M($XQ[.+@1%7 B0N"$VL-%E5GI<&B35W6TPR;8,4M%@)<"%N%L%6Z"]V-C+!%'$L<_ MW*L/B&4N&L=CDAR*_*K7%9%>=CBQ>P7L^4A2[S.)O'*$!$UH9E#40 '@1\N'#\<0!\3^"%KPS*''T35SLO!#V'@9Z54JARKO.78(X$I2PIO-Y:3>E/V]1[U M7RFU%FT8['?==A<>.AI15Z,YQ# %@5PN%[D4KUDE\8L.$A7-2,2PRT,NHO1G M"I'+@3-:55DNR6I=N=9K=;DH*\RPH:SI=+H#/HG AS^D"#3@A#DH$0X5@3IF MA;IJ%]UI7: .,>PB48>H IIQ;\K,3/(6[EAH8+(O_"%PA< 5EXPKA!]&#+L\ M7)'F"J#"FG%X/TPQCY4R: @70G=, L38MS]&X(W+Q1O">R*:F8AAEX@WTEP/ M5."-0^*-4I7'?="),H$UP:.];W:_#R^A?E"_ZQE_E+[ S_!7Z X!" $X@G]A M12#&?&C''V-S*E5X9 >#&&)_@_T5D.MR(5?U6JY<.N02KB,Q[/(@5YIKI@K( M=7A(H,+ZU$EDXO$" PV'!#L%TE* %1K[$D=. M1V_"?]SJAN>89'IC6.P>L"_=PA,&AI4/YH(+6,15>'_YKX-IU4N%FEK%F07( M-7AQ,.D"3/IZ^?.26E"+Q<1? 6Y,_'S5HQ2U(->2O[+MHV!6Q5IE[:-VQ^A) M_)[O9(A4C=% \ESMMRM6$A89,59&^38H%?YV!E<2,?W?KMJ&YH]=JO"/YBE. M+3F378Y0+3L37-M>66YU@>-6$U*^KCYP//;\^-CLW#I#I72B1;LXB7VO>;.39QY>K/7/2O=@Y'G#LL;$Q!8*AJU+ MW-7[D6ITA "_J(1FU:6-2N#&\3^'[FSO!C3?D']N> M$=R>. O?AOO>;KZWNRD2;]+3B=7/GYQ?H.?\8A3[5:76UVL5I::4=%*MZUI- M[I.B6JN5>C6E]JUZ]>&%R3E0 E%/A-OK)6@NB[(YX(Z^[=Q4DN#HT<4GT%5! MYK2UC?RL%^J5Y-^LDGFK/R_)ZT7>QM*S5%#E[63ZX2=5+=2*]93-"=6,2MHV MJEZ0R]N^^QAS*NT#CJ5'JU#*N^O&D3 _#$1A#[PQ?'B9MEZ ,V6Y90$#=Y"' M@YR^FTH=[%5 +8T>7H->-3[@UJ$J5:@""Y9 B3)T*=R@LP*-6YP(]EMH)/8\1X^S8Z_APUG,,5# X<4+*GN8:#8&I_EV^#[0N&()K*XO:BBK+! M?FZZ"R?=[[-G;A]!S@#8/S_F]F"XWAGRY <#/AMLS)/%)1 2_L027IDCA4S3 M 5Q.JI\?%7P"!>'5\(>KC'A9BGT1+?W.-6T:F_T6O[%.OTK-LJT\'3FF/:54 MYR$23_!1,_@HZE;#ZJ90R^-UZ;O<''S88(K+&78>M_ZON1LOG/T9&98IR:0J MAPA%%H+IN())592\-^YYAFZ E#$-+\BRZ(:?&91%1Z)7U:4#^+U++%_((B&+ MA"PZZV'9DD5%(8LR((N*2EZS+0_HR^Z3L6YP473//T(I]+G]^+OTY4M;R!\A M?X3\.>MAV9(_I9/+GW2)GK;]2EU6=B4^F=86GF& ,Q;9@GS)M@\+&$ M@93O#QCFD?EAYW%!!!//Y+!,,?&B,&B=NQ*AR-^#B=%)45$T:@)ZXQ-6(-2)'FE](Z\E]A[F3&L"U]S M#1_-8\V)QA.-&QK34I1ZL93#K&+"J\P);44(.B'HSGI8U@1=FCO7"4&WK:!3 MM?[;@N[!L C\$_XE!%VJAYT'$Q&"+I/#LB7H5*'194G0J:C1K99U]T.#]A,4 M.EX*"G^W7@8J->G/0K=P7T"95P!A6):Y=--M!S/3XF.[6#L*7EN7*V%X1)>X M/6)1+_\\,>DTE)&J+*M"+@JY*.3B60_+E%RLBVJ*YUI-,0J6H)-Z58L%BKM! MW-Y244*I0_\[-ERJS\>5=^ E<#93J6V;AC:-UT-07D)ZG?6P3$DO M13ZU4G>*5;?P' AGT!^)3R1,W/.D]H(-3RK)950[.G0P-H,,HOR+"+ 0C%LP M[C,H&P*=8]_:HWB-P@YU;-?'H+CE,H932MQ5U0MS M.&I$?#1,&18@?7RS]-==YXM@]A?([%>6$(Z5*<2%!0O-XQVY4:OA4@T@,LN_ MR>,GQU^4BD4+,<.9K^KX;Y_?%H5M0LO2T;8,KX"'P\UEK2,U>!"B, EN:*1] MVZ!%.R;,&3XDKHL>4AR\4'X6S\30?[MZNR"E6E2OWCC)VN)1EDN+1XF?K#I* M0FAY+YNY5)R!'67+I\#)*H5__*)4Y-OE/V><+LAN7UE_(JG(9K# $Y+JDVW1 MA-.=1UN'*]K]0=3EWOE1HBZWJ,M]DKK_S*=Q] MZJDGQLN?G6;WS)!/W-S(2T(PWQ+"758F(@R+4(H( MAI7R._U]%![Q5APA#NI$)2:D(?$D';N@:F3L 9_PAX8'[V/:,KR]1UD6&<\G M,^#M/3HD9A^[=N&#&)'Q >S)+AU;\"WV0#+VA[8+J]97@[BL5'6=]]+->[46W^PUJA^(SW0GCL&10<$'!-RJPUAE32O,;FX[1J MM]H8K:BGLT;OM]3[MCCM%&1X-[W9PBQX#BNZ]JZE^T^-CU];]Y^!^KY\:3UU MD\CN."06JR2K[*=VZ"GV%%MGV<\M=.[0UECTQJ3CIJGU,#$3= MS6J;(O37)-HPA',Q@"4AO,)NJ8YC&P@$%^F(1>!^-E#+ _CU1$W/MG+L0SI[ MXDAZAP5=I?[8-"6'U0\ P(:V5F+:%GW/0W&#<@+\D:"VX>M"[7(.\RT^"UZ" M= -: FM@"38<9;-MXU%I'H?A!G[(%&LWP9G$'A%_ ME..80="TEX/5 ]P>LR?S$[$1+$NZK?$/ ZB-Z]2W6J@#-Y08%ESB32;)SF(: M7R;#[+Z]?)!L'1S!^U-\MFZSS^"%Z!&;7ZL6;!B\WQIXTNN0^)Z-76JYYN(9 M/C]MBVK4\Q"@P4QTZADN7LR"]):^LZ%B,]-<4*OI83OAX.KTJ&F_ADI+'ZZ+ M_8I;!HN!.^+A)@5ZS5(-OCCQ:L0A&I^"$;@MF%X4PDYN=@^QYP5H/6ELBU2N M%.K%]2\_D.GYH/;.9)W@":XR[Y(=EGHYF>O_E-OP8O@F_QY;$P[![" M4E*'>=_4(\Z?5/>-8]F]CJJ5;Z,D7(":=,'D\LZ)DLUI1#,VIYGWZ8Y/S!A# M^]QZO&MVOOQ'>FI^Z3X_"0(-FYR%5/EOH$FI[0+01YUZ;8;HY?&W!4U=4,\2 M>^M'5,(T34VSQY:/>IO@=B?@=HW._:=64[K[TKC_+(@U\#L%\.SRN%?#U8"3 M2W.PV_R,N]:5?ZC\(/JQ#1AZ=BDN=5G)^ M\U(_-CHO_Y$Z__A%E97;QI^/37&S+_UF/Q+7GS*2*!9OR7B4-3OQAMO /31" M;3@B,WII/+:D3O/+EV8GLS0GV-"F69KP4*E#37,A3"-+Q" 84'JV&QE0^U/K M2ZLM=9\[#6&BO7@.U!X:IN%(7=LEV36Y"A:4GNUFIM.GIZ;4;3ZVG[]V/[>D MKXW.Q\S2GN!$FUI0+0NCVD:._>I]-Z2OQ-4S2Q2"(:5GNY$A=?_=?)*^-C]U MOC9; A1=/"OJ_J"6])4.71AU %0T?XM61N.+B@ZBHH.HZ" J.LQ7=*B(B@X' MJ^APW;/U*?PU]$?FA_\'4$L#!!0 ( -V85%B0-\J1BA8 %T$ 0 1 M??OKM/\;C?YX_W%J7 M@1TML,^L"XH1PX[UG;"YQ>;8^D= _R0OR+KW$',#NAB//PNRBV"YHF0V9];A M_N%Q4BQY2T^/[6-[>H+=L?/QY,/X&!U_&I\@=SIVCSX<'!SM_WILN_:[V:F# M/Z"C7]'^>/_$_@C%#@['GS[]ZH[=@WU\['XZ^H1//@JFK^%I:,_Q EG0-#\\ M?0W/1G/&EJ=[>]^_?W___>A]0&=[A_O[!WO__'K[*(J.XK(>\?\LE'Z=4B\I M?[3'7T]1B)/BX3*T"\7Y@V"QP-3&[^$'H#H\.H"_"0%G1VHJ('[(D&^G%3B, MCMEJB<.#$/.(2[( >>9AK2J% [C5#=(;9-[3 X1+9N%D_?O[) MLCC"9+$,*+-\A=I%X51(&U(FR$:6U(;;P$9,*#DO&28-4\KO88^%_+2.I'O M!TS0\R?QL^62^&X@'\ CKJNGB<(^8#>9O)4EK&16$/^=(FK3P--,(7M+&BPQ M902'^>5/,)A3[)Z-^%P]3B;H/Y84OP=)DB)*!<51QU]##3B$=4*T]S9K4,*" M*Q[4 CAX6'91G]OO8->T_4!"?/)OT7H/34U;#R38^W_?WZXJ;6B1+6R?,(P89GIX.=]\>? &F>V_M@25+_M MK9==XQ*%V+GS/XN?UT=U3!P7J2%(PJMFF-&0,XN$"HRU,)UW!PNZ^<"[U\&"E_: M6V'@7@0+:-@<^R%YP3<^H(-;8JCCJ@7R0QV0&7E M>X'"^;47?&]KZI3ST@+WR6!, E=+L!T07%^PCZG1_)E0:+O^A-O])+2]((PH MAE]BR@'U[GD4$A^'X<2&:2 47$WTOY1XE=3"EV+H+0:!];I-/V].%Z3R?TEF PH Z_1H3^CKP( M?\6(]X58P PZOIQ>"\#1.@"(=_AMO>2Z^0WS P@J>*@1>3#.B() M)PM862FO=Q9P&Q B7X+ ^4X\#SKA!AKAS\C4PQ-02Q:: :-AI,7G5\4@C1D* M?#*6EN0Y-)PNH,,)$W,X] =LE!CQ9]BWB=&$5L=%B]#'=81RW 1(!7X#PF8C M1T@+A\?!IW4D!N[6$,T_1R&W5Q=+[(>F<;,*!EH@E%VT8#06G*P\JP&!(?VE M3^C5:&;*4^FZ_5#91,<^6D$^H*Z^8W-,9=NY/?3*U#%$CGU(9O18&9=N=\;%B1CPG?4C3_Q<GVF$[;Z)IQQY=1:[M?68*+ M,;DAHE :7#-&HXZ+%A7%S5T1J!LB/%7A-F.$-(RT("F>[IKHW1"!J@C"&>-4 MST<+D^(&KPGI#1&F^I"(CQ(=-,:FBH,6%\6%4!9E'"(F M69B/FSWB,J)6_LUZ/EI\%&="+OQ88#A$C$H#B2TB -5^^VI155]6@UHC)YH:%&*%[$02I#6?!\ M@WF\$3LMM(HKI#PJ/_0IOJRS4WU/ Y PQJ1^BV(4.S #WA(T)1[AMX?!NV@! M#UF.RR4PZ ;[SL71ZD[#C(YQ;F;(HJMB8HAG@T0^L6+D)+1B$2W$\BPM+N5. M#>/^Y;<6.Y&'<[-^J@%@"434GG._YOKD#UW-YIC0LJ6B&X7_A=)6\812CA;F:&3+6 MJDE)6JQ,B2H8-DDMUG25%I 5#1G=#4R7*@Y:O$H<; E>P[9/U@=&DEL6/T_6 MU)5PIA!_QH)'S)Z7U[C-9-]!95JD%5==Z.ZM-JC>!";)!\7M2@U]XB? M4>]48QVN#F),K?AK54 ]*-Y(!78A):/IH&S>W[9*M*Q>JS&*TZ[%I%&QTNRT M2J]5F3,_8M#_$]^/D%>"<)RWPX)MZUEG FDUK\V=>,7PEY#0DB*6:V&2[L2" MG3;J#MYLX((VX:K5"[.;^ ;OK*[I>W[X(O#EQ?6W&(4X'A:= JRK1(NWXI[4 MX9W5R%<946>60K_3@'QOI1[DQVBYE%^-15[R#8-;+&H;$\&K?XH M#E*=_N2\W7F1LJ\P%-*7T=BK73N6D#?@5:EU$BWNT$L6??0?3NR6F(F:Y54TSKE^K8(IO MV43!8I,XEL=*!+*$1%8JTDZM.H;UCX.W5JP_#G:JU6?5RI*L%@AJ]&=)'ER. M:#MF5Y,:M:JC1"8,C*Q4@#3WKT ]1$U1[T(0ITT?\#+N(7ZOJKDZ&+'58J[$ M$TJO71C'!V6S2L2EL#M89?^GFQ_^*NNC)- R7?TW1K03I(UJTH*O1!*JP,]M MIGB)O!ZDT:3IRN*5#UVS%T%UMYCY<_;>UBVZ 2 M+=2*J[T&ZLI70W:QU8!SM^0_ML_X-&:M15MQH.O0MF1%PT[VK, A654GCB-J M0EZ9$RD'5PLKOO.JM2I2_HV="A7)5OA,DBI_55Z?!FS:*V#^ Y/9'/IH\@+[ MY!E.4X*32VL"-^ZS+Q3YO!P_J]>M/G4@@E:O&G\R"%XE\EBQ0/G$YNS^'="Z M1)MBN=Y9.&<]R'\F M[X0_ :K:8:NN!5>/]_>=VQIUS+4XEU_.J%U*>%T[@T,%(YV6XSP7>!2XW%T6 MVX1;6!A:5*G5BN:70A8.M&02Z726Q%_]OQXC1U^P4Q*_0#6.@ON*?3JJWS8D;YL73ZMQBENRQJ-RUZEOHU$ M8(M+;,4B6XG,W(^92&T]OW]\;\62YUEQX?E.2(J?O!FZ"I.93UQB(WX79)8O MEAPVA3(R)S-W77S#KQGM17B"\>K6]R)$FY476 M!EC;MZ=J6Y1*JX.*1[5"!PL'LD#*<2)FNHL6@EJ)I-+"SC^BG@)Q)R[U@ 2W^[%*P.*M-"K[A<:Z#/ MSPNBZD()OE&%V@>\UMB\$;^ MMHXKUNJ,ZI#-^]Y2$<0J$%>9W@,F;)?D8;PN2$EV?KITBY*'L>(FD=O YG%R MQ!ZC:0AV!-!!B3O7)386[_B8O8L8O ,FSR C#A^A8UKIUP^52ZM^:BYIML\J M:E_%_23<)(GEY!?89I**O2ZE+)IY_+;W&IZBY9+X;L"?R-]] M/Y"RBT?P!,O3:4)K.+Q_W.(PQ+AXY.1;M)AB>N=>O3+L\XA-G* QLM T9!2Z M_FSD(B_$(\M'"WPV,F/B\[L)IA[0,1H!C]U5-OG*=3&/2V?++'?I M/V [\&WBR1N6X.$Y]@$+%EX'%/94T$)X=@DKJE"\:]AB@GG#7G08'?.?P@/.A<_7#;H2QA?]'TR#.Q__70CX%3%[_A5SZ/,](F64 M'5)/L\UV.0$_I]*@6<7/6>6FL/J6:^F\HCN MV<@6MS<:33B+P(<5A:X:]+EP--?K3J%(+P9!_L*Y2>EE>'>IO3G)V9OB*U/R M'_S*SCT8X94ZT6D=V^PUEE33H./2ZYOY)#_SR;_ 6A)"5'9##47GC9)/$J)& M>I#&5'.C[8'G=MZYSV%\*U -Q,W(#:R"'SIVDVWTG9M-2/>!1]+/3U>-Z :$ M'8#KL-/YBB_8T13?*.T$N?C\V0ADF)R=_ K&7497,.T&*TR_!0S^8FZ44\Q? M0M_ER\I$BCH=Z(+[!O.[@Z?;4Y%R%;\LWO,^28.>AD.EAD]OQPR/)RAIB!,* M&[>9*'J^RHK$!\TGWQ%UY*G#&Q":1N+PL%@6G^8HV3W\CD.>N<[D]'CEU\RI M/U*&[6QI0A'1:6*O@E$$>PLJ!@UTQ04'V9.[3\W2TX3T[=>@:[XGQOP3,FH2V]$[(E7\#DX3=S5W9#=Q6T'Y-;G:.ZM;YS,]4/ ML_C7ZNRML3^)@'FN<9.X/X%K#K? $N&L;]V M_!P0G5&TJ-_=M.'4DTW06D)AYN2"T0YM@1?RYO\+1.D*0.1+2"-KV(S?T*:5 M'^]1J*J\MQ--M\U/#XG<)9]!+'S^\ >!H)6B[WL ,:?QB%18/R-6E^_%O)=M M7IM?M?<47[77T/?3916]J*M[7N4GT/TS&WNH2OV O6,*T$[@,+ O< M +AZPE[@]Q6]\COK8N]IMG6%_=I7$HK]K(_!_+SS\1-9X&M<[8-IP^KM]\>9 M1BX6) QC][G-W10YE[K&%6#&Y.T;_71S]7>^DR"O_Q5X#DQ>Y[]K=B'5!'V( MS+7V6 D;@CM4[_CA-KYJ:,(-G5?T]LKP@/D"QI4ULZC =C0URXS9]&+^*RQ( M6>9,D_B;CK OEM7ZR=,X7T)K5.GIWMJ>ND*4WYT9)B<'Q'&227JZY>K^4>=! M,N'PUJTM37/562$U)'V8N NCZ"'PO&OIMM'M_=3R;XW.>JPIL6W3 +5V)JFA M[*MY7..3XYO-)DX0$Q8]]>1-#O(]^SS1 M4A/+-F734[A;VX#B']@>8;)DE]A#U9F/75;Q]@9FZ];(.]CB@<'WD9/UM:&; M7JNJIZ_3[E=$_X2R(-DCMB,J9L?ZF::.HA=3S+? MU$XOZ,\43W^96+_%9%0 M>!+2*]3YT3%^>H'&^>%R=:@>21OS[6T,XX$#R8V3V&X(G\@"?KMSST%B;M/> M\D,=3+.A->3R]I,)7S,/VBZV&L)>C(0F6>^@R([,< =IX^T93%OY:6^CK/I& M_/N11U_T*!<381NGTC9GT9=-_<1'WHH16S/O*\5ZH>+R2%J:D@Q=?AW!/EQ\ MU:4^U5M/V(L&Y@)TRL<(&F:^5A+V)_,5%@41911!1["KA'>OS VX]DQ85VU< MC%NLL!=J\P7SY6@YYT>:T_BM?O[2D?5ESNHVWR%^&XK=SLOZH-IBHD59Q7W= M*5Q'G@NB\8>:HV5JP5X,B=0)5B^^4JP?PI?F:51_W[.3-!!S]GV9'^)##5C& MRG*?9:K'7DO6"UV(]U>YZ'BM(5!9O#_+/U>T>T2$OT3>!@JSI;A Z0:Z'O%H M&">X<]<=N;J@3 >,WSH:4++B9 ?4;APH2UR"<,V%?3U=%5AIP^3"C^-TC!9+2O=5UM/73*T(?Y:DK>>0Y-S54^8+N+Z);Y5C7.CO' OK!?0?LH7VTLL_[_QUSZU6XE, \J^#J@G*HR- M5>PM$*%)7P8K^0*2.)%%]*BR_69,^MH5ZSD*64S-(&E#0_SV\XVXRI[F%[AF MR;Y-*'LQC)5HCRZEKZ)X+QJ3V+R7.+0I$0>,1<[_2OZKWS\W9]"7'7*=>]C@ MD$0M\5L/PTS,[/*[\JM,OF&C&U,V9]P;-6B;Z)#<+%9,0JY>O+NOZ*UO,.O6 M%=QR:]Y5C7VU%KY)2=B_?!$RYV.GD/"Z176WT-:3N>C#D M&@J#$K7/#:]U3=;3O(%_4ES8&,+LOD"??_H_4$L#!!0 ( -V85%CE![T! M42@ %6> 0 5 &UL[7U9=ULYDN9[_0I/ MSNM$&?M2IZOZ..UTC<_)*OO8SNJ>)YX $+#919%NDO+2OWX"I"1KERCB4M?9 MG8LL433O!\2'V! (_,N_?CV:/?E,R]5T,?_S3_*/XJ&G?_W+'_[P+_\+X-]_?OOKDQ>+?'Q$\_63YTO"-94G7Z;KCT_6'^G)ORV6 M_YQ^QB=O9KBNB^41P%\V?^WYXM.WY?3#Q_43)90Y?=OI;Y=_,MGD%*E"\=&" M01,@8DU0M952"V=RS?_GPY\*6=0.!8B8/;]-*@C!5:A2D*E!!XI^\Z&SZ?R? M?VI?$J[H"0]OOMK\^.>?/J[7G_[T].F7+U_^^#4M9W]<+#\\54+HIZ?O_NGD M[5^OO/^+WKQ;QAB?;GY[]M;5]+HW\L?*I__^MU_?Y8]TA#"=K]8XS^T!J^F? M5IL7?UUD7&]F_4Y<3VY\1_L)3M\&[27@B='RCU]7Y:>__.')D^UT+!DOU M2?OSM[>O+CQR]6F5%T='M,ST1_[F:7O/T^>+^6HQFY8FXI]QUK"_^TBT7O$( M-I^X_O:)_OS3:GKT:4:GKWU<4N77^/,8B=)2;7'\[YL_[.EWB!EG^7BVF9%? M^>>3CVQ@NJ&EKVN:%]I.S.ES9XM\X4VS)I;%\O1OSC#1;//JY'@%'Q _3=ZM M%_F?'Q>SPJOFE_\\GJZ_32SZZI-PX')!,(H*1(\1HL$@O$$R7Z'0Q15T\HZGJ^.CH\UGPG1-1Z=_ORX71UVEOU[TG?2M<'D0 M^TK_.:^JQ?P<"M(235_CI^F:YR=H^JDHDY)1 4J%P,F5&:I M-Q*\+ORO]36FWKRX&]5]&&)^3#71623=J/*6UCB=4_D%EW,.%5;/,H<%;=:I MO* ZS=/U)&1M%*LM-EN8P,C4ALW@-/O[,HIJG;2=J7(WJOM0Q?Z85.DLDGY: MY3N.UQPG+IF[GY;TD>:KZ6=ZQ;'F$?VZ6*W^3NO7]3U^G8B0%)&)C"\S2"=9 M]0E$< F]$B8I7WO[TCM"O ^)W(])HB&%U8U1OTXQ36>L%VDU06&C)N4AM6<; M)C&$:B-([XQCSYEL*9W9MP!:4PQ M6R]R])1"/]W1W+CS0+Y3-52A7".H*BWE)"./.K6A!Z^EE#84V=O3OAG-F"*S M;MJBS]SW"\56*UJ?>3^%M*U&6XBR)0ZJ>%6U5T:ZVGOC[AH<8_*H^Y%A[QGOF8-:'//3WU(F)F6:$=OC MTR'FZ@P_V$*U'/L9XS1[\XD!(M5LM$D9N^O!6_",R6WNQX5N$NCN,S]?K+X/ MT6E#AG(!YR0/,1D'&&6 S%Y]*HKC/=][?^,Z'&/RCOMQ8.\9[^L47QQ8X)@M M.1% QL0V*=@"B4J$F#7[9%)+G09QAF]QB1[7">XG]SUG>XB\,?LHUV3.HT3K M;:Z0"[$W4MDVI20+6)V+M<';9 =,)E^+J6>NW!>9JLNL84DBJUF16)K9 )G( MX6>RO!3-H7+EH\DI[\^$6Q+-.TUYUU*>Z=;=:K[X8MX25C3/#9 +V5##DH3@ M=6P*+SR1!&#PO"(+1NJ^7W(+G#'YO8-RHI=(^D5#5\='OK"QK0ZR2-1TLH5@ MD$.SDETPNN6H#EW$.)JD<7]&["F X5&*6E;JH%:6\92EP"Q.M_&2X;]=&6[ MEX'=/S3J,=:_+A>K,Z=$J1HH2LVA*3DP'EE9.T%@@]!6Y5H4YL%'>Q[1F$QF M-Y[<'1D^6"C]%L5LMOC2RLA?+I8O%L=I78]G5W&>0DQ2R238&;:ZM"((3X B MLRY0"655PMK<.\6X$\ =K>RP%93#\6@PF77.OT]RL,'E[$ YQ7I>*H188H(4 M34K1*Y.[^^';)_?=/U J*+(,7EHIP+ IA&C8!.H6R9&KE'"888Q1.^XNV2O\ M??#D=N/GF^7B$RW7W][,<+YFEZ?Y)9^:T]IV+W4@DS)E(!X2F.(10G+\'1:. M97PI&GN?![@-SYA"AP[2[S;U Q6=O&W3^+K^MJ+-8"=%^9PT:LA9YW9&);#K M:Q4($Z)%(:21O7VE6P&-*6[H0(=^D]^-#W]=+,J7Z6PV\09SJ"&W@E)634FG MEK%UP&3,,A85BN@M^M-GCR\OOI>4'S2EW03Z<_F'VQ":I MF!S(;1:*UNK<$-NAHVISKZ#P!\^NSL KR&9*5"JQ2SED;(C-PZ!+!G9:Z__$DO^>T#[']>:XD+9=D0HD54I:; M6U_+X6C@:T:H8V,N6VC%MD55\KFR2 MO>8@K%;)@/IKC.O!C"FCT5]I=!# 84[DG6T8U"BP,#\=LM-N2 A +Q.TOARQ M.)$]]E8=]\$UIHQ(9Y9T%\O0Y_'.E)KR19/TH(NN3:DI")@2!&>D=YIX_/:*YW\38C:] MN9CQ8SZ\FJ]I2:OUA(F? &54E3&]F;3?Q'=FP3"TKDD[5=ES,#+SEZ JM,099%.U;&WS5/<3 MS =3:WNXI>=HI+(E;;(!I]O1JM86"(5AUZ'H*".)D-Q@^_0WF<;'5=ACX>.- MGNP#I==MP?+8%A>QG*B1B2HBYRHM.&(?W5CI(-;,.@G9":W6AVQZ]R:Z$")E\RI)(U^%386-6BE>W=)?!._?2 VIA6 ML?QFN6A&UJ.R 0DY?&TMT8I#P.HK9.^HA""4L+W+(L\]?DR:=E]Y7RF7>> L M]R?PR3):39*7CG@]@M#M'*-7#D). = G986M4>K>PKX"8E1.;&^9[S?E TJ> MG$!?JH>4+\5T)A\P+Z\Z">' M?O6_-.<1SAC1LW(TG4]7ZS;>SVLJBW[;ZT6*YGO[79C9>U\LUK9.@A$L./3 &!T;X",$'CF9T M%8FQEE1Z>_JW(QK3UFE?>G241,^F!)?WA,ZZ2&=OJD]M6\X4WVX]29",EQ"U M:H5"PLGN)\EN@;-W_N1B'K>P1A94H$C-2Q$C0= VMJ:@#@,;].)[E]'?LBOU MN+Y3+PY,;[EM3>T2W]35N5//'K]7*:CM>M7N[]X@UN-JHM:FU;>$2U M+?>0#:#% "$H&:(@Y57OS4:C]'[5R:Q.K,G"\%J%48&Y4D M)"L,5.TI",I"^H,EHQX2C7RF^3&=)E4O%P/]\C7/CMM-A]N/#P*1Z-14Z^9*'0\7B) M[095!4F0@%1KR5(IQ;'WF"URWQE[N5@R >?;NKK\[?T2YRM>X W)O&Q^.B%M M^8_C;:O7[9;7YI(8+V,RE2"1X)FLF"%48H?,U.*TCCGDWKG$@88R)K5]2'[O MXA<=BBF#*XK?YDO"V?2_J/S?Q:P9KK_B=-Y&^'K^CO+Q\(_S M#V]H.5V4,\_3%U.MRZQ "[89;J/)I/@[&Y&$"U4=BO?[CF5,SOX8B7]0KAS$ M1+ZE/,/5:EJG^=)R;0[>L]?/7_%"?XEV_C_!L.-*7DFS@*"N+UJ&BHTW]#L20 MVS/!NPA@N!X;EXJPGZ MZCZXQK37?C .=1;7H7;BR3F9C-90A>5!BQP@2<>8K/?:9Q^=[1V7_C@[\0: M#T29;N+I>*4:!Y4_XZKU-#MJ]G.K\RR:2-%8R-:;%LUQ7.?(@E?)^5H](?8N M>;@>R9@:R!V()!U$TC>]U(ZU\+@O'C^A$$Q(@39]7L @!AXA XO6:ZE+D4'T M/DAT(Y@=>\T-?@;T$"SI(YF>1T27K7W#"]K^^6I^M7'[I-08:G8(/OIV522U MDG_)\((*5<<4,/0V0/?!M6.WNM\%?;K+:T FG77=9,7X@<=MIWEH3N+J\!F71K0\>)*E*BBAE$:!4P M$B5$%=HQ[S;_U.[DZIT3V!'BO?CU.\M3#RG%O:G6*B"N<_HN](1<37PR1K>T M:!0MA8XB0R2!$(*V;*9MB)=W7*\6<-SO4?=BR.\D+3W Y/>K\.=QM__;+5J? M<4:;S,1JO9QFMK'M%\_FY>(+Y]ZYKX3M8X.1,]KT(VID.?'I^>^XA^:GB^GUZ ;4XW0CT_/?<7?[]J5S1!?U_/#?CW? M:X+/IO+%=/5IL<+97Y>+XT^M&DQ54S_0U$U\=P;7=/-C42 MG-"6W3!6,2-Q91;ADC9[1-L';7XQ<0Q 1W8_:VX;CR5: M0&44V%JM+MGJ5'H/_TY0.T8>C[*=MR^5KA2\=954OS+)R[!NO+M[XJ+*NJ5; MHVUY%=/:5*;(:HN4+":;9$SO3O?W1S>JQ@./1:D^LNM9@IN)RJ:/=#LMMVD, MN6['Y;Z]KL\^XW36-A]/CM)]/T@W22K65'V!I#6R00R;>[,L1-35!';]HNB] M(_- J&,* @Y%N@,(=3CM]O/Q:CIO#5NVQS4WOM#V-V6B4T@U>YZ+E#*O$3?IX;K);_'2&>DHG5JE8.I-?@V5:5V,2!"E#9& M5TK VOW"@0>F,QZ^TGCAOZ5/QTL.1U;TNEV>=;28OULO\C\GAHSEL-U#=JW( M)!?%B]]*"+%4$5 *F[L?NK@3U8_@BNY+IIM652=9#>,O-!BO/VU"S%^^TC)/ M>2HFK?6AH=9WO3AU[PZ;Q(4"3"W5N0I5).C$D5UCUNN1?(#>(N#,V5WD?1V!EGK;2^U^< _ MM X3//[E27^*D\*/ZV:!5$G>>X[.G6H%;*5"J_J'Q/,ADXA:Z=Y9V;T _PCN MXD"&[0 2'KIORZF?NW%N5].M=F7/^JC55;[$Z?(?.#NFU:)NC]B>^L X/U\J MQ[\[/N(7U^<^Y05_P M:=PSP8TFR*D4]3LC24F:7O> MV5E9G+V:U\5RN^1>S1D,GAZ:/;VDIIWS*:/90C. M@E'% TH9>0EHHZI%$I=S>C=4DQT4]EXE=GV1GMS-?'Y.15799"= ^'9F.9E6 M?U8(."K-$E.6P8='F-.K2$<1^XR<]!<*!$=%G3X%IWV'='KJ[3U^/3^LZBAX MH2WHY P8@1X"V@BN1&5T".UN^T=8$=>C'<5.PG_?5=&!0MTBAKXC^]X79351 MM4J14(.4'!J;9 LD%Q18V[*BC$3$WKG P08SAK#V!UDOXR+6&"W(9E?\I&]0 M\E$$:3./1?G6L]T 8A1@JQ.Y*%7RY45R$+-Q#N(8JI9^$.J/B"MCY/TU/2>2 M):0:':"R/*1H$#!K_N)$$-4H6U _ OT?UC5DZ'-"_WU7P9[,&=)98DB+#_/6 M2/Q58:33.L6SKG"GZ99GUZ5;6E,#C*1KNRY.%XE@0DJ )5OP9(/2R.8->S>< M[3R$,R-J!6M4 )/9N> X4X/U: /FBE1ZUP,-/ZI19#=^ M[XND Z%&N5 N=W;=..#O/^+\KXM%^3*=S28<:UHKC +A0JL;4:;5>44@Y3 D M;6Q48S;:=PYP#+F.W_OJZ M.K."3>M#8[P> ,>0X!@3WT=#AE':AVMVM*R@DB@01*=YJ48A>$PZ0_%.D3-& M%G^ 1'?'$>V8[/@?!^H1B/2#+(Y3-_'T9E&9G8[2&! M8V.BLY!T\JU=A,PF M8$3;N]7X00>X8P?S_UDZCT^S,:^D[3N_ISU7$VV\DE)XR"JULE)$2*XI"AV* M])+0VC%''S>-:\>F[O^S;!Z+4T-7A9[M2/R-<'6\W%Z'MTQ\JV17C_I=Q7?C\2T]_EO/QT?&F9>OFRO3O][^>7OSZ_5+C8G.1UDKP M$C,8ZS0DP5Z9CJED9]%8V5O%=@,_BGK'@]#TZNU>CR'_?E> W7BL^.+ )J31 M%AD+",,.C?'5 RJ4[.1D,@Z#0-,[VKPOMC$=$SLH]P81WM"6]K23 IYKHL#N MRKO\D]UUY)U,^HU]+9H':2,&B\Y -+XP;:*"1$*# M-62=)8S)]^X2=QN>#H<8K__LC6J>.*$X0%,"?(@M>,NMOJ^=H5/M,MB80_\< MP>V(QK3IWHTGUQQC["64?D;QN]6^S^6=-_>&L;+DNE&T;-G!N.R!@S(.>"H; M>X-">-W=:';"/JK=[,'8]RB2'MK"GF[FL1FYO.&WN??ZXDM[V-6'/:B3->TP MRDXV].5TSO3]=?KYZ@9KXZ>/VI.3!2S*"D8[IH9#]L6BM290%9YZ%[O1(F:4QW^:D\[?W2YROMC([3-)[7$?L>\.$X_7QDI[-Y\%IG[^GVEAFJ'E*K7;VTV+>?K.HFTMN3P:S1]IFCZ=U2L7T&F^G M],KF.:V8:E(Q>>&"AA1;=Z8H3;NLH !/7C!8R"35.Y-R]O!]M=O%NY WP^'5 M$T35$5B=1C!LS2$ZIT 4F1)9%,[T5EI748PIN?$P25]6.WO.=#=[]@]<;LKG MO\.0.H?LI02G/ 2]WSP_HO'X7A2X MS6K_C>WET?'1Z?T2O['N7%ZZ0GT8N[('D.%-3J]9ZF:-V(&ABP\\ZXM^"NK% M,4U$+*:HE(&IR#ZT"(%]Z.K 9Y,TI1I)]KZ&Z[[8]M5LMSZ'!=)NNCR>KZG\ M\C6W#N)'[:=)94>RIJC!R\*KDMJE%B9;]NN*T$)[96OO2M,' 1V711R ;9<5 MZ/#B[&93;P Y24X;D9)L=Z<*MA]!M#UIR?%K4DXD9T40@[I29U#&95\/P)X> M(ODAC?!$CL8,,Y0Q&^++,W5H4RREQ];E@/U!=@J-M@+0JP+*.H_5^TRIM]\] M"E-\[CE7MFN%3Z&$+(!\LF!X4B#&'$&C*CPKOBF!1YJ3,>^_#\*YG0QR+Z%V ML\GW17NZ<8O..K31<*RG2]M"JQ"#-D"H4X@H=V>- .QZ NI5 MY>)*[PW0G4&.:;]]?%S;68R/PK;--FT( MPD33UH37K9\U*DB"44HEC"XHK0N][V?=%>.8]ME'Q[6=A?@X5&N;8Y*2R=1* M[43B<"TT]9MR:QY<="3C5?"/J=?&MK\^/JKM*L2#4^WB9BR/7)O,"CA*$NT. M<@W8FL<9C)1T+FSQ'RM6&.V^^JA(]W!Q/F9FILWT\MNBOJ4CG,[Y]3/!.].DB9M,/V\-?2DE3^5^(N:5_@]>0%#%MM0VJ M%,_A0?<+?:^@V+M;Q)5/Y,7R:GXEKHXJ%1/102J:!UN+ HRM!2 'VYD7JA;4 MNZSMGM#&E!O9DR57ND8,()Q^MV%?#^X=Y<6\-$T[,5(4[UFM*F=3NXPR0[ \ M$PPIE4K2QM*]L.,J.1](E0.IEC-,8TI)'(8E#Q/'T+[1YKJJUC;N_-[+V557=;$\]X8]_*"' M/*:3S[/W"#OY-V>/.2EG_)GF5*>M[4R-[3]@W>#!B!0AH&?E@<$4U;Y5KO/B MO '*OGKHI$'K2^+5B[.K(U59"MUR'D46'E\[WIUXY% IHXI2.*E[AWAW0!J3 M9].#'Y=544^)=#-7)Z#>K7%-K=$O_X5KH'$ 68J4%90Q+6RTK1%2M" =.5NP M;?SW7A;W C8F]V9 RG243F_BG#1ON HJA9*#M0Y0((&1?K-WI$%B4;J@I=C] MR.T=D,;DY0RI7WI(I!M-3IOIGVB]F\9MG-Q>@NFM!8CJ U@J$:%FBBD MWEO$]T,VIAV4(4@S@'RZ<^>"^KL)(56M@U<>9$5&*&)AA-F 0)_)&3*D>T?? MN^ ;T_;(D#SJ+JO^FFBK'V_")ER4.9(&[6T%HXSE22@1BB&R_$N-IO>1H_LA M&]->QZ":J)]\'B5>OPS\Q;3RP*BT6=Q64F\.U1VOJ:1O^.G3[-MT_N&W=Y<5 M\%M>1^O%FR4'P5^W+_:.^ <'.F3.X+"SW"GK\ MCS.OI9[KP_.W.SS'C.]G7 M6\Q;+1*J]@YH]L$[ MID3*B'C91;Q].J'>!RZ_>.(FK=B+VA[>XM=>L,W,[?:[?K1?YG\_:)[4S M.U:FW/;"P&C!$V@U0=!%@4ZD"&GN$#-:^-O3W;^@A55*PN$J64VM8<84XL;_0-VA#BJ"XE'Q+B'2O&@5'N]_DC+9^4_CE?;\M&)=#'E2@8" M^ZOME$V$6)4&$=H]3!1MSKV/T#\$YYAN\QT1Y_82YR$3H],/\VF=9IROS_<2 M.\WV\GNV#>(N7,#=)='Y\ !=C[.X^BUSW/VF=L[?O32# MCVYTEQ;MS8.;-G'VF/SN&WYG6-JUVMN9GLT67W">:6(L%F>1P*)M-[RI#!CX MB\M))HTF".I_/?.=L$9U!='P'-E3+MT)=9HP&(] MV"B\""A"#KWW&V[#LU=ZYIP$+AB<[:MOZ3/-CUO:\R2:G\A"Y*MPX%(P8-KY MV!0=0C"I(E64(MTO#;/C@\>H*OFZP0V 6-R18PR45O:A+5R3THDE0#RVX( MA^X<^@W"2?'*%*,+5/8F.?K-&=A?L%!0*)DE_T&]DQFWP!G3/D%W)O46Q\#\ MF"C&8*4+8$-L-QH$#TG("M5:$7GT*=;>)UVN1](]H&F>>!4A&),*1$+'H^,@ M*R6AP=EDA4ND4O>+$.Z.VN]TU0X6LCR4"'<&+;O._6&B%%6\R3H92"YP7*9K M@N0KQTVMZ81'S&1Z]R2Z?Y0R#C=M %+L+8KA92#R62XU;&IF]F^=A)A MGR];8/2GE3;O/N*2?L85E?-OV-P]()SS$6,[O>!:!"8JA*@@PQCI&JZGU).AK1'Y+$K>YA^9G:\GN6\_(89ZO-GU0N&"BD'&0.D'+K0Z4H M\W?-2J$S.B57G!DP9-H+^Q@C]<.2M;^(NV>'+MN#\[W*-K$GHA:1)\=F@6!\ M2L"3%D"R_E?\*XX2U;YF^=(SQQB7'\ 2[S/SP^FM5_,WRT6K7CTMTV(NOZ#/ M-%MLDD^3&KVJLOG.GBP[T))Y:UJAM0JV8 J^V-XGR'?%.*93G8?00SU%-ARQ MMBFH7)C8T3D(IFTA^B(@%MO.O%.)IEU6X>+0]+EW,O!0!S-4A[/*U3X5&O\7:J-OK[8KXXM447GCLI.DLE M,8$DJ]KQA)9\:0P,GIP,N8K:^Y3CC6#VOJFH3>O-0PVA*-D.863C @>\L:V, M=NN=-!PR)!V3ZYV%OAW1F+(2?1ARY:*B?A+I9JQ>S=EIWU1L;L&T-++)NJ O M&G))S1T+A<-((BBAZD3HLM*]BY"N@3&F!, P?-AW[OM=?+UM<;!MV)._O5_B M?(6;PUM_Q>F\))O=V$M[0N7 M<.5O[N$+#8"BDX\T]/QT\IW^;;-RJ#S[S,S^0'\_/DJT?%U/H&P>OWI]O%ZM M&1_S?E*+U*X$"544IGHBUF=%1!!2D%?DBNKN9NP(<5_E>K;OQ@;%$:GCB%0XS,6Y*F/O).=. ,?DA0W)M72#V1STF1_"0E#RPO _+T[/K)=:S;Z]6J^/VZO9]$V^T M5B*9=N>1;[W]4NL+J<#:$DJ1GJP9H.?Q/I#'Y'6.CJ&=)'U/__3D]?8E\:KX MRQ_^/U!+ P04 " #=F%183J+\$7=' !J2P, %0 '-PBQ0+9>@PK*@0\E0I&:<\F,2B7]WU_^ MD5$':0(#YI.E/^,"G#,%"F>HBI,.O9T_=#@8_?,?]4L,4_R!EC>:SG_\M[^= MSF9?__'CCW_^^>??_XJ3X=_'DR\_"L;DCZN__MORS_^Z]?=_ROE?<^_]C_/? M7O[I='#7'])C^8__X[=?/Z53/ LP&$UG892N7D"OS[/+?WB=&OWCXI?TI]/! M/Z;S?__K.(797$ ;E_##VK^H/\'JSZ!^!,1#R?_^US3_[=__Y8CV8]YUG-Z5W?!8&+1E\Z]$-J)T_",[P+.*D):G?/?<:G2LB;U)8'SG].DWC MLS,"$?Z=OOEQ3N'K\6@Z'@YR/5L_S>AK/6RGX_)I-D[_/!T/,QW5/__O\\'L M8C/Y]05$HY!<++;Y?]OBZ=<606@9C ;U /J5?ER^HE+;WW+PKQF.,BX.IA4= MPW'Z[H^&]5@<7\IQ&"(.YY^>G$_A2PA?3RY?283C._IV>F(2AL(S!Z9$ H4N M0\@^@#(R\FSH-T'=1L%TA:H2IG&.@^4K?JS\_1&'L^GJDSG'Y]Q>3\6"NPW6 M]3G$(9Y8(5R(+($LF='=:!&BL0:BL+ZHC'2]IK[6-*?@^_5759+6RY0[< MZB(ID_%94WG.QLW8N) 4$?VW'\830C'I3O2K^;'PCS0<3S'_V]]FDW.\^G \ MFA&J?Q[.7TB;$[_4;YHA8;&+7H_/OHY'=8^]^FLP/=$\JVBXA,*0="NM GB7 M$4SR2D>ET2G7%S#N(J@A3NZYW._!S0,$O0XS.S/\+@CMB(8;-+V97TN=B#JY MH6XT0L.=!#5$P5IUZ1X,["ZX<5]NM!"1'(FN(*=(K*:.F$ M8?'Q0N$[3?3P2-B&V3T@@,@Y&X_F&M=OF@ M4:<0@C&-I7^+B):2OTNKORWV!L(9M^3L;5&S747]>8)A>CZYF).TH&Y)&.IB MHY?UHE/5RV(R.&LM**FL]1ISR*TW_%IBGH+HVW"ZA]W^*NM@%H9+XC+AT L5(9A$.C(I0N K<<$KSK2)SD?1& ;W$O04H-".X[?A(':% MPT>[GP0I'1^=CZLGI?WLU.X^/]WH]M^NH_C MX?#M>/)GF.03D00C($?0QA!3O-'@HS20/2N&HS;TX@_G88)3M^?SVKHJ\833X10)D0FP$FIB#;TX(K7H'T2*B/MK#[-CEOT M[!\;O0ISO6VRFR1ZT%%OK_JDR"0Q>PL\.P,JDYH4=6%0HI2T=YQT-C3W5-X= M]'BJB-B1ZSTHIW<840NLGCC-.2%4@N2.ULGIIG6ENFEU%IEKRYWU_9NK"V*> M-BK:R* /_37_K_/I;!XO_#Q>8V/-*:WY#+GJ5*10S=,D/B)Q:#J8X2>:V<+]K M>MI0/2I$]*!^SSGW;CH]Q_SF?$+W](+,Q7:TA MA"0@)QYM8DP$T=IEM#V5SQ)HK:1V&V>FUR/MY[.OP_$%XOR//IQ/TBF1_V$8 M1M.3@CQK,HXABYKM*0J':$D+85I$.I%1R]3:5'P@J<\2<4WE=QMVML_C;2W5 M)\P[G:1DU?N&1#3QR&(Y)^Z+W>,*M)?190JZA[&X#SC6U9!>[XU4B MMDPPGVBI=< 20"AD=-6+# YM(6-*&.8*)F-;P^H>%K)X39$?%.(S-&\ MHNSU>#K[#6>GXWSB1>3&E@2NA@R5\1*\)C.D&)8Y2T[(U*O?8PU=SP@T+21S MA\MT9\_Z[SA;A(I^'4^G)RP*1NNCXR[02I7" "&K!,;2_UDM))';&"??$?"T M ?%P7M\A^9V]Y>MBAI4X6BT.OHQ>GT\F.$H7GR>D?(4TE\0HSW\:SNV *]?) M3UCHWWP.?YUXKFRT7$&1-=CH- <_CS@:'J3SGI/)T!A#/2WE::/Q&.1_!ZYW M]OZO6]^ M+W5A3$:76)' LR3C@\<"(7$-&(RP(4IE9.M84E]K>9[(WBL"[H#VSK&+^[;L M1TS#,)T.RB#=V)IO21BOWK]^1ZS]%(;XOEPM]G)E47D5LI35DN9T&3D'@?M( MQ@Z+F@>?8]X7MG=>S/,$]WXQ< >Z=XY3W)M:$)#QZ+,!*90"I35=*(R)ZOXQ MS*"J496#)7DT257@)G*L_#98:CJ/MA!49L"EY,K8C*:'HJK[4Q5:AMY%'U,LY\-?::M.Q^7#9/P5)[,+PE%E^=>Z.]_43,_A]/O- MU:WT=O>7MJG(;;SX'0MU*XDGM4E"/J^'W:N4QN>C6;W0Q\-!HD/OU\LLNJ"B M89@]%.8DJ!()(3NKWOH_MKXAD4%8I'6)U\0>-(.5**C MLKH7P$3E0DI9NILIMP]8S%Y*W5MH_UT\9D> ML2A&$P+1^ !T=]:TXT(L\X*T$"%<#EP)C*W5O0YD[;N,MP\0C/L51@]9DVM) MK 2NBDX[D-A3J6\'\@Y3^-MX#<<$K'YT[C,R#1> M%:SD+%@23D.R'LE CAYBEJ)NRLP$_8_G;DK9QE?MWUG07#KCWEC;L))C3EUU M6YP3@9=+IN7?(,\S9IR- HH) 52."IQ41"W=M#SRY#33G22_^5U/3/2-F=MZ MT[\O99#P.G%OSR?$\/,KZD+B(BD'EK-(U/D$T<0"W@J=K1$YI]A)]!M?]<0D MWY:U#0LRII/9R<-') T1/O7;[ MTT]7-_]W+WQ"YL3#&=F'-)>@ZD+&-D9!%[FVW[^;%?X=F']3?#MPKN5Y?(.< M2#IEM,E75S.18Q('N@GHEG#>IVQ,0'%'!\/C$^ :M;N]_+9A6&.Y_4:<.CL_ M6_6%B5J)7,@L8/1%R4)7!MD'@+Z8A$QICYUR+39([KN7[N_RW(GMXQ8\:ZD M5T+"7]<(R?,L>>;!.V7HEI<*@B626+ ".5=-X'XAPW0OW&1[LM.C]A095LL5HP\!S1D<6JSXX# 5* M*$QYK46YV"6 MH<%M^'DLH<&W51)8-UN^N=5^NO@M_*_QY'7-'YKKR4=JVV\%BO%^A-.#&G0/J5>$_A[.5IZM+N3V%#[O. H8+8A['BL M*-M&7'WT,3Z?SL:DKG[$14W#]'3P];+78@H)D^"0%",#(J0"T9.Y:4IBFD[Z MI'TGS]@V6:?KR=E_V*)74=[L+-9(#GWT/\9T.AH/QU\NYIT0;K%B0:32RN:4 M"]B$9,U:3]LED]JIDV!61+2\M#YV.A'VM&'37C9]>-H7AVH(49 *"#[Y:HT( M6J:M59_1<>,"]\YTZ@SUR -@#U&2'\[('@-@7@&PK9B_)H#R$,[U& !S MSA@>#8/$Z(NRI.@X801@C,BC3AEEIQY$AQ9@IP!8$_EMP;!> V#9"'16.4A> MT+DNM *GDH!D1?*F!,E#B]#ED03 MF+[V@#8-CSK-0!F8A",.03CZ&)1*@;P MD7[4)1NCF7>\V*<3 'NP\![,L[V:XM?"+IDGHH,Q0.%9S5VE"UYI4MD-LX$ MYI1K/0VB"UU'&0)[B(>Z-V'L+0;VT_F4.#!=--&9SI](]L!D0H;?-]PAU-7I MN6TB6MLOH='PR3M>? 4G&6P((M4XIZ0KG:P=B,HH,+*48!AW0;9N/GL?/3N7 MR5[NH;O8_=/%M9\6MH6@.^AEHV MP\FM3FI]"N580F5W+&VN/7-NM,ZRCA6O6TD[C!!KB:B[ "/W>5P$,!8G;11 M+H$C:WQAE@?A)'B3:-]D0Q^T+LD]$% VA*D.@Y-MV-^Z-.;SNY__@\B;#?Y: M]B7ZZ3]7<0^.TCH1H0B3:R%(@2#)V@O12J:RLBIWJ^=?^XK]!P<:RV+2W0>W=6$^ F@S"\ZQY=)2L;+XMQA'=6:X(8T>UK MLC*W22>!+)C0>A360VE]*DC:J\QZ*:W]/ D9/UU,JZ;_;I160^!""(4.47 L MJ'I^2HB.3E*BR7 1I"\=$P#7O^.I0* E*UO&GRI9O[Q>NB*NR.$Y%F8-@\"9 MH/O0:X@2'>C@60[6UG&@G21[^]E/2J([LJZ'842KQ1)A<3":ISV\IH-D0$^? M_S!OM5EP,L',3X0+9#9A!BTSTAV6!(0B',@@(G>(VBG9DX;8A;ZC@$H;#T=O M8NE!M?@0+E:CBQ;;9$4\3G^9U#[#BN6<4EV^X'8YJD,S#L+Q$"+/+,;6_7@W MT?2$H-*4_3T:GM>@O)Q/]7\PO\M$^J ,PF6ZS*I#^:M1_I4^'@P7/5>_,S M^G#^)R(,KUK:KKN13R0B8X$+*)X3 MJVB%X#EAV09.L-4L<]%7#*S?E3TA2!XA%'J8O-AVE5I&!92NUP& P=*H=/QC&KRWF!=:-!=YPL./<;FZ[JC>XV)R?PU^TKIR* MX"5&$"K44=&^D*)<&#"+A@L3%#,W%^TB3.=K)[29/: M$B<[ITEM(Y2C3Y,R4M)UP""[E.DZ"+KZOQ3D.A11,N/1M6Z"\]C3I+82?]!Y<%@YT<8E.9!;I,-81HG;9(%<^ MN=9C9!Y9FE2O.-F&_?M+DPJ%%E<':"45Z^2JN6V4/*3,M"A>%GNSY=I32)/: M2A;=TJ2V860/LB'D2_8R^9A\CM"#H6&5=$"-P"5T'4>"N'6(H#3,(DKDV( M:G\5DX^S8]$^4;:-N/;X7&BVZM#+9 TJ/N M6+25*+?H6+2-' [6L8@Q$S%I!#/?,\C(5LA%0I;)9X;*)O/2L:@Y;-K+IH]. MUYORVIR1!.A,=F8L@=1%:^J J@R!!QFCD.A-ZRRP1Y96N(OSN"G[>SA?6N:< M_8ZS5W$ZFX0T.V'29\5=H65)"4JF J'P %X)5)@\E[JOP$SCI3PA,!Z#L(\\ M-?9UF)XNF]!_"\.Z^)\XGDSJ.;/Z7]!2D1)H-8%>&VSJ):_O;:Z$UZDR=*9VA_3UYJT"#Z& *B234Z0 M;&2W:$;?E#YOP!\?&!JF[*];W(.Y_7YVBI-E=4GM,*B+Y2!XSY9CZPR'?E?TLAV.##6W]X0[(G/ACL6)8&*T.D .JN9O6D_WGY. :'4N M7F:CNC7WZYO2YPWUXP/#;:3[XS[]5Z6B'_$;CL[QQ 2,W# 'A@L/U9,%,=&E MQPOFI*1FD1]U:&S3 I_WACE^3-T1.#NJC(AKI=77SP@>O-**T\D0R#A2)N2: MG2\@Y)B4*5Y;?LR-E^Y>U.4+TW+%!=JO=Z:WUP/45,A,B0YV <55C)3*! MUUF"--+5,8(L,WX A>H%]WM1JAJ X@[8[UQYTICK)[4\R^DH@3E>VZ#'3/>< MXR 114R^+JFO 12-EO"\D7\,N+@#Y\TCQ3OLY,NV(N]7746^6_2)+MXF+A!$ M#!84HJ8M'35(II4(F:.UAS"<-Y#]O&%_Y#"Y8T?LW/WM,KQ1@D!7B@?G FW- MDE1M'.[ 2AV5DT)[WKJ)_TLT:V=)W &)G4.U*T(^G$_2:9CB%<"O8#T]4<@] M2UR!]JQV+2R.=/;@@?/@5 S)QM2ZT73RW^TFCGYK?IFFK9&ZY'"_IJD[8NM^VB7%C!KS26';&KQ MB H<7'8)K(V.T8D:9>XT97FWIBN7].R]75KDW)92+,B8%2A?$$+B&9R5F>?@ M:@.%QNM_E.W2ML')SNW2MA'*L;1+VZ:@W7DN0BP,DB'-59'*"L%J!72I9.>M MLQV'TC_S!B=;P62'!B?;B.L(.DYT(?>EP4D/HM^Q]<1#Y'8$<).<].V<$!07 M!93Q'B*J#%)&%;R02OL]'F:/LL')/E&VC;CVW."$)1:YI\5[DWDUX0W$.OU+ ML2B=+9+=&G;VO!N<;"7*+1J<;".''AH0O,%O.!Q_Q7S53>/CX,OI9?L,)[SQ M&"68X%QUAQL(QGBP+)&-CUJ(Y@?.!I*>-E1:RF-/C47KH6H8+\H' 62="%!2 M&'!&T/%JG*;_EAAS7S/U'FN?XET4ZA9BZ*$[8(=>FQT(?.E3O+4HM^\_^P Y M'&:<>^!(!UXF1B(=J*)$"-[2+O'6YE+0>_Z\^Q3WBY-MV+_'<>[9,E:,HQO5 MQ3HJU!%5F@''8AT6S82Y 8JGT*=X*UET'.>^!2/WVJ=XY:TO>,*C](&3GL-+ M'5.,04' 4"!K[WR0*(5K/8:N"UU'@9 V+N/F8E@+E=9QN&72\J?SL[,PN1B7 MY<_3>+'ZS6R"X6R'.-J6;V@3!]ME63O&L>8'QO(MRQ#Q]T!CP251M(7(JY6: M58+H)8,0-+?(G% M0;&>#&94M A5+SNOI$3K6,Z=ZNSI!=>N#OKIZMI8]^Y]FZ+MA#ENR-26:N$5 M/35);4G1=*D?=2%J&]NRF\1O$[)?.[*-C&X+O!&#]R9]H24FR11(7>?#.RM) ME34*>,Z"H<:B0J?DP..2^AJC<(]"WX:OK2W M^?#,A@.Z[VP\I9G'@+S!K0O M#)26'KS#"*2<6B6D-8BETR5^Z]'[T^<;\GOBB#>O"UOR;]N>;@_M=@=KJ*+[XY M7XQNGU\%207KF0Z0NXA5DIS$B;K:LW[UCUS-M'TZ!7B7IB_9W L]T 7 M"GN*Q&RF[C"AF+92W0(R.XBDCZR1S92&X+A@,0(=EG4XHI+@JZM!2V9LS&B, M:3X=YT"@V1"6.31FMI%$:W6!CM3SR60P^K+R3U[IG=XCH_N0V4)ZC&7@;4(H MCB?%711T/7;TM-WY@OV[WEL+8MR8BZVU]_*7 P0 MO6)0# ]"DN*:93>YWOGXIR75W3G8P\F^I.8M<>*NM?_\5QJ>U_A@C?W0?VL+ M@!/2A#@9':0KTS%&YQ>9DYXT7OK1,,%*X(RW;CCW #+W:%GTX8;?EX#V'9C[ M/4SJ=OJ&NT?@;CVJ::CM?D(;U8:]&4S#ER\3_#(_8=ZOPGI7T-$Q1R<9!QXM MF916D:Z@2+)&^\Q80B:5;KS7-M&T%(OH>N\"O"?.UE9^ MVS"LL=Q^(TZ=G9\M"9&:*>N$!*UK8X7,$4+.&A(KNB3&>?&=[MX-DOONI?OU M_S^8[>,6/&MIDE="PE_7"$DE!IYM FUK%8BH%T%A@6S3J)%H3!T;"6P2WO67 M/D+A/9AGK3UE*P-N9=2]#J.$PT4QV ><#,;Y)"7FA"8[D>P,4^-^&1R!"W@. M68C:TQB[!4@WOVO_GI9>--X^.-O:D7;+N?=Y<$8_O2\_#8;T#[Y,?PTSG,Z6 ME!*:D16+(&6M'M-$;M2D-ZH@3*SMJ^W-,1==':?WO?8IP:$_?C<_$I: _8R3 ML^5!=9)%XCG:VK<\":*"B/+9&4"9 UTQV67#NIT!MQ_^E*2\*^]:C[+\A+,_ MOKY%G%XUU5HBS&G+LPJUK*+6Y%A'&H-# T%+TA]C\;S(3A)=^XJG)-3WP;3^6TSPO'Y=.GR)_I/4!!9G#3#;)D'96SMCU MK4AD1.ANG36W?_=3PD//G&\X&/&^D-*JA=[%]U$# O>)#(QYP2/PE JHY!@X MCQ:D M\-9^:J-V77ZCV,[K,1U&<;P((KV:3*KY.N]@^6J4?Q^/TII??Z;OI@3(VB/@ M.L2=8TEQ*"5:@G@@B!XM9!Z2/BYS8QP M]_I7_0 ZD-M34O"6I!XF0[B!D,?[E] 1 ,N+6!QI[6"=4Z1)DSKMK;7 @X@H M.>J86K?N/PI ;<@>/CR>MA%,:Q?HI6*^*GU"88OB I*M?CS.:BL\06Q0+&8N MC/$WTY\V.3/,,DGS.H@F9&RV&X^[DZO.T12\8&5YYYDT4/[GWN],2<&94V+)M$' M3<35QD=!JP@A2PR)69=5ZP%=]Q*TYQ3C'B2XC3-L*_:WOAANK/W=Z-MXD#!? M'G8G(B>%K&APR1A02(JZB\8"G7'T<=+T'_&00^36FYZ,T-OSM740[>;:S\:3 M6?7"7E$7M8V%,PVQ6F8J.@^>1 I.%R=D=N%6R^*.5\>M5SUIL>_(V8;AM6XG M$6,D0(P3Q8ZPPX. M^WN?U\85WYWD1D[V*Y?/JV_TDNJSH!"\1G2OXI#&M"W:=3Q-FO]:]79$B[1&9@%UPL2$EYQWL^'7O^/1"[8E#_N964:K'=1!XU/20:_"5DP) M9#78X.GH(EW'@3.D\&078^!1*:];Q_C6D/)4-<(6G.^AV]@\=E%PUTQKPG-[]J^6&Z;*6GE3(ENLXV+3%W0%R,['ET-+MX0AKNJ:0B\Q!>:!] M'4"%((#4-0="L\ASG8M@6^NUQX_4S0,;CQNHVPBU!X#^-A[AQ4(%>'L^RJN; M/Z7,>29:T.HZXD<'B 8E\2@&--8&'5N[\^ZF9/\ZUN&D.VXNFCYBZ3B9#929K%Y)'T].<\8.JV$ MU$O3SWETAY;\(7R][''LD4F.S-!B-5DOIM1>9MQ"*J$@F3&,WQRTU2#T=@SG\*4[G7ILU6J$LB\KPENJ2:22!"V5NJB M9%:T=OIL2^/^,;:_\%2O\NKA-KO?D'Z5TOG9^9!.T?S+9#R=_C&:8!C6!?Q" M;/^5/OD)RWB"M3NB8H4S,JK!S+NT%\8@6BQ MS$65R2+OG6J5 M'X9A-'MU[;U72'5612 R#E\#VQ(.XW[% MTH,2MG[U](!5@DP'$GL*+'4@[S#QHN:B[0J='>5R( AEII3.544T3I"*6$=^ M.1=(8TR2,9:8XZU+[@\&G0T!G&- SC;B:%VB](YNP,F(5(&+-_@-AT1L_C0N MLS_#9-6UU#'+"N-8J9.@4J#3EM.QSJ7D2EKA7,>)AQM?M7_SK;ETQKVQMI>Z MQ;.OYT3CY:J79!7'R5+D=+4Z64!)$R!$KX&I('34.HKF"3!K2'DZB&C)\QYN MC5\Q3/%T/,SOSKY.QM\6)3"K 9$LD-(E"@3#-2C% D2;-12TRABA@W*MX7 / M.4\/$JUXW[J0\7TI@X27JZ65OSV?$+//+\^O[+3VDD5(B1M009$%6.B*3,DH MK[6)W';K"KKQ54]'ZCVPMH=*QK6KG[NQ3X1DLM3>\59@[5TH- 3M- COK=,N M*V5:1^+OI^B(\-'&0=)0 #UH#M?B&F_PZP338)$KC%^'.&?[*"^#<8L&YNL6 M0_:0=HX38S(B77O9BYIHPL X;I22@;2@UI9(*]J?'.0.(M1]6L"_X^R$3+CL M#1K(.GA0<=Y>NWB0)WD(GJ>'(B:,7]OH:E?QN/\YZ"V8,YDL871 MET$<8AU,.)L2S3<_VB$@]; 7M0E#-5ADH^#3V[H$_'7P#6]1