0001092699-24-000006.txt : 20240208 0001092699-24-000006.hdr.sgml : 20240208 20240208162129 ACCESSION NUMBER: 0001092699-24-000006 CONFORMED SUBMISSION TYPE: 8-K PUBLIC DOCUMENT COUNT: 16 CONFORMED PERIOD OF REPORT: 20240208 ITEM INFORMATION: Results of Operations and Financial Condition ITEM INFORMATION: Financial Statements and Exhibits FILED AS OF DATE: 20240208 DATE AS OF CHANGE: 20240208 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: 8-K SEC ACT: 1934 Act SEC FILE NUMBER: 001-34702 FILM NUMBER: 24609394 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 8-K 1 spsc-20240208.htm 8-K spsc-20240208
FALSE0001092699333 South Seventh StreetSuite 1000MinneapolisMinnesotaNasdaq Global Market00010926992024-02-082024-02-08


UNITED STATES
SECURITIES AND EXCHANGE COMMISSION
Washington, D.C. 20549
FORM 8-K
CURRENT REPORT
Pursuant to Section 13 or 15(d) of
the Securities Exchange Act of 1934
February 8, 2024
Date of report (Date of earliest event reported)
SPS COMMERCE, INC. 
(Exact Name of Registrant as Specified in its Charter)
Delaware001-3470241-2015127
(State of Incorporation)(Commission File Number)(I.R.S. Employer Identification No.)
333 South Seventh Street, Suite 1000
Minneapolis, Minnesota
55402
(Address of Principal Executive Offices)(Zip Code)

(612) 435-9400 
(Registrant's Telephone Number, Including Area Code)
Not Applicable
(Former Name or Former Address, if Changed Since Last Report)
Check the appropriate box below if the Form 8-K filing is intended to simultaneously satisfy the filing obligation of the registrant under any of the following provisions (see General Instruction A.2. below):
Written communications pursuant to Rule 425 under the Securities Act (17 CFR 230.425)
Soliciting material pursuant to Rule 14a-12 under the Exchange Act (17 CFR 240.14a-12)
Pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act (17 CFR 240.14d-2(b))
Pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act (17 CFR 240.13e-4(c))

Securities registered pursuant to Section 12(b) of the Act:

Title of each classTrading Symbol(s)Name of each exchange on which registered
Common stock, par value $0.001 per shareSPSCThe Nasdaq Stock Market LLC
Nasdaq Global Market

Indicate by check mark whether the registrant is an emerging growth company as defined in Rule 405 of the Securities Act of 1933 (§230.405 of this chapter) or Rule 12b-2 of the Securities Exchange Act of 1934 (§240.12b-2 of this chapter).
Emerging growth company
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
 



Item 2.02.    Results of Operations and Financial Condition.
On February 8, 2024, we issued a press release disclosing our results of operations and financial condition for our fourth quarter and year ended December 31, 2023. In accordance with General Instruction B.2 of Form 8-K, the information in this Current Report on Form 8-K, including Exhibit 99, shall not be deemed to be "filed" for purposes of Section 18 of the Securities Exchange Act of 1934 or otherwise subject to the liability of that section, and shall not be incorporated by reference into any registration statement or other document filed under the Securities Act of 1933 or the Securities Exchange Act of 1934, except as shall be expressly set forth by specific reference in that filing.

Item 9.01.    Financial Statements and Exhibits.
(d)    Exhibits
Exhibit No.Exhibit
104Cover Page Interactive Data File (embedded within the Inline XBRL document)





SIGNATURES

Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned hereunto duly authorized.

SPS COMMERCE, INC.


Dated: February 8, 2024
By:/s/ KIMBERLY NELSON
Kimberly Nelson
Executive Vice President and Chief Financial Officer






EX-99 2 er_10k23.htm EX-99 Document
datasheetsimagea.jpg
EXHIBIT 99

Contact:
Investor Relations
The Blueshirt Group
Irmina Blaszczyk & Lisa Laukkanen
SPSC@blueshirtgroup.com
415-217-4962
SPS Commerce Reports Fourth Quarter and Fiscal Year 2023 Financial Results
Company delivers 92nd consecutive quarter of topline growth
Fourth quarter 2023 revenue and recurring revenue grew 19% from the fourth quarter of 2022

MINNEAPOLIS, February 8, 2024 (GLOBE NEWSWIRE) -- SPS Commerce, Inc. (Nasdaq: SPSC), a leader in retail cloud services, today announced financial results for the fourth quarter and year ended December 31, 2023.
Financial Highlights
Fourth Quarter 2023 Financial Highlights
Revenue was $145.0 million in the fourth quarter of 2023, compared to $122.0 million in the fourth quarter of 2022, reflecting 19% growth.
Recurring revenue grew 19% from the fourth quarter of 2022.
Net income was $19.0 million or $0.51 per diluted share, compared to net income of $15.9 million or $0.43 per diluted share in the fourth quarter of 2022.
Non-GAAP income per diluted share was $0.75, compared to non-GAAP income per diluted share of $0.63 in the fourth quarter of 2022.
Adjusted EBITDA for the fourth quarter of 2023 increased 20% to $42.0 million compared to the fourth quarter of 2022.

Fiscal Year 2023 Financial Highlights
Revenue was $536.9 million for the year ended December 31, 2023, compared to $450.9 million for the year ended December 31, 2022, reflecting 19% growth.
Recurring revenue grew 20% from the year ended December 31, 2022.
Net income was $65.8 million or $1.76 per diluted share for the year ended December 31, 2023, compared to net income of $55.1 million or $1.49 per diluted share, for the comparable period in 2022, reflecting 19% growth in year-over-year net income.
Non-GAAP income per diluted share was $2.85, compared to non-GAAP income per diluted share of $2.35 in the year ended December 31, 2022.
Adjusted EBITDA for the year ended December 31, 2023 increased 19% to $157.6 million compared to the year ended December 31, 2022.

“In 2023, SPS Commerce demonstrated ongoing success in expanding our network as we continued to play a key role in retailers’ and suppliers’ transformation to omnichannel retail, improving supply chain efficiencies, and enabling our customers’ international expansion,” said Chad Collins, CEO of SPS Commerce. “I am excited about our long-term growth opportunities ahead as we execute our strategy to be the world’s retail network.”

“SPS Commerce achieved strong fourth quarter and full year 2023 results, despite ongoing macro dynamics. We delivered profitable growth while we closed two acquisitions and continued to invest for the future to strengthen our competitive position across a large, addressable market,” said Kim Nelson, CFO of SPS Commerce.








Guidance
First Quarter 2024 Guidance
Revenue is expected to be in the range of $145.9 million to $146.7 million.
Net income per diluted share is expected to be in the range of $0.26 to $0.27, with fully diluted weighted average shares outstanding of 37.7 million shares.
Non-GAAP income per diluted share is expected to be in the range of $0.72 to $0.73.
Adjusted EBITDA is expected to be in the range of $42.1 million to $42.7 million.
Non-cash, share-based compensation expense is expected to be $20.1 million, depreciation expense is expected to be $4.7 million, and amortization expense is expected to be $4.7 million.

Fiscal Year 2024 Guidance
Revenue is expected to be in the range of $616.5 million to $619.0 million, representing 15% growth over 2022.
Net income per diluted share is expected to be in the range of $1.75 to $1.78, with fully diluted weighted average shares outstanding of 38.0 million shares.
Non-GAAP income per diluted share is expected to be in the range of $3.11 to $3.13.
Adjusted EBITDA is expected to be in the range of $183.0 to $185.0 million, representing 16% to 17% growth over 2022.
Non-cash, share-based compensation expense is expected to be $55.7 million, depreciation expense is expected to be $19.4 million, and amortization expense is expected to be $18.8 million.

The forward-looking measures and the underlying assumptions involve significant known and unknown risks and uncertainties, and actual results may vary materially. The Company does not present a reconciliation of the forward-looking non-GAAP financial measures, including Adjusted EBITDA, Adjusted EBITDA margin, and non-GAAP income per share, to the most directly comparable GAAP financial measures because it is impractical to forecast certain items without unreasonable efforts due to the uncertainty and inherent difficulty of predicting, within a reasonable range, the occurrence and financial impact of and the periods in which such items may be recognized.
Quarterly Conference Call
To access the call, please dial 1-833-816-1382, or outside the U.S. 1-412-317-0475 at least 15 minutes prior to the 3:30 p.m. CT start time. Please ask to join the SPS Commerce Q4 2023 conference call. A live webcast of the call will also be available at http://investors.spscommerce.com under the Events and Presentations menu. The replay will also be available on our website at http://investors.spscommerce.com.
About SPS Commerce
SPS Commerce is the world’s leading retail network, connecting trading partners around the globe to optimize supply chain operations for all retail partners. We support data-driven partnerships with innovative cloud technology, customer-obsessed service and accessible experts so our customers can focus on what they do best. To date, more than 120,000 companies in retail, distribution, grocery and e-commerce have chosen SPS as their retail network. SPS has achieved 92 consecutive quarters of revenue growth and is headquartered in Minneapolis. For additional information, contact SPS at 866-245-8100 or visit www.spscommerce.com.

SPS COMMERCE, SPS, SPS logo and INFINITE RETAIL POWER are marks of SPS Commerce, Inc. and registered in the U.S. Patent and Trademark Office, along with other SPS marks. Such marks may also be registered or otherwise protected in other countries. 

SPS-F








Use of 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 press release.
Adjusted EBITDA Measures:
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. In the twelve months ended December 31, 2023, 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.
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.
Non-GAAP Income Per Share Measure:
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, 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. In the twelve months ended December 31, 2023, other adjustments included the expense impacts from acquisition-related employee severance costs and disposals of certain capitalized internally developed software. Net income per share, the comparable GAAP measure of financial performance, consists of net income divided by the weighted average number of shares of common and diluted stock outstanding during each period.
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.










Forward-Looking Statements
This press release may contain forward-looking statements, including information about management's view of SPS Commerce's future expectations, plans and prospects, including our views regarding future execution within our business, the opportunity we see in the retail supply chain world and our performance for the first quarter and full year of 2024, within the safe harbor provisions under The Private Securities Litigation Reform Act of 1995. These statements involve known and unknown risks, uncertainties and other factors which may cause the results of SPS Commerce to be materially different than those expressed or implied in such statements. Certain of these risk factors and others are included in documents SPS Commerce files with the Securities and Exchange Commission, including but not limited to, SPS Commerce's Annual Report on Form 10-K for the year ended December 31, 2022, as well as subsequent reports filed with the Securities and Exchange Commission. Other unknown or unpredictable factors also could have material adverse effects on SPS Commerce's future results. The forward-looking statements included in this press release are made only as of the date hereof. SPS Commerce cannot guarantee future results, levels of activity, performance or achievements. Accordingly, you should not place undue reliance on these forward-looking statements. Finally, SPS Commerce expressly disclaims any intent or obligation to update or revise any forward-looking statements, whether as a result of new information, future events, or otherwise.



SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED BALANCE SHEETS
(Unaudited; in thousands, except shares)

December 31,
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 
Common stock39 38 
Treasury Stock(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 

Results presented are unaudited and thus, are subject to adjustment. Audited results will be included within the 10-K filing.





SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME
(Unaudited; in thousands, except per share amounts)

Three Months Ended
December 31,
Year Ended
December 31,
2023202220232022
Revenues$144,965 $122,018 $536,910 $450,875 
Cost of revenues49,040 41,541 182,069 153,065 
Gross profit95,925 80,477 354,841 297,810 
Operating expenses
Sales and marketing33,214 27,201 122,936 101,772 
Research and development14,216 12,480 53,654 45,748 
General and administrative20,612 17,950 84,887 67,340 
Amortization of intangible assets4,998 3,832 16,116 11,768 
Total operating expenses73,040 61,463 277,593 226,628 
Income from operations22,885 19,014 77,248 71,182 
Other income, net3,456 1,752 8,315 142 
Income before income taxes26,341 20,766 85,563 71,324 
Income tax expense7,330 4,851 19,739 16,190 
Net income$19,011 $15,915 $65,824 $55,134 
Net income per share
Basic$0.52 $0.44 $1.80 $1.53 
Diluted$0.51 $0.43 $1.76 $1.49 
Weighted average common shares used to compute net income per share
Basic36,831 36,093 36,646 36,117 
Diluted37,640 36,915 37,475 36,953 

Results presented are unaudited and thus, are subject to adjustment. Audited results will be included within the 10-K filing.






















SPS COMMERCE, INC. AND SUBSIDIARIES
CONSOLIDATED STATEMENTS OF CASH FLOWS
(Unaudited; in thousands)

Year Ended
December 31,
20232022
Cash flows from operating activities
Net income$65,824 $55,134 
Reconciliation of net income to net cash provided by operating activities
Deferred income taxes(10,079)(3,732)
Depreciation and amortization of property and equipment18,631 16,421 
Amortization of intangible assets16,116 11,768 
Provision for credit losses5,707 3,359 
Stock-based compensation45,508 33,399 
Other, net2,415 220 
Changes in assets and liabilities, net of effects of acquisitions
Accounts receivable(11,949)(6,435)
Deferred costs(10,724)(10,646)
Other assets and liabilities1,834 2,632 
Accounts payable(3,947)144 
Accrued compensation7,143 (3,786)
Accrued expenses1,302 (2,829)
Deferred revenue6,464 5,965 
Operating leases(1,947)(1,562)
Net cash provided by operating activities132,298 100,052 
Cash flows from investing activities
Purchases of property and equipment(19,761)(19,880)
Purchases of investments(133,994)(160,427)
Maturities of investments131,331 158,937 
Acquisition of business, net(70,218)(91,420)
Net cash used in investing activities(92,642)(112,790)
Cash flows from financing activities
Repurchases of common stock— (43,215)
Net proceeds from exercise of options to purchase common stock9,856 4,908 
Net proceeds from employee stock purchase plan activity8,114 6,676 
Payments for contingent consideration(2,000)— 
Net cash provided by (used in) financing activities15,970 (31,631)
Effect of foreign currency exchange rate changes562 (290)
Net increase (decrease) in cash and cash equivalents56,188 (44,659)
Cash and cash equivalents at beginning of period162,893 207,552 
Cash and cash equivalents at end of period$219,081 $162,893 

Results presented are unaudited and thus, are subject to adjustment. Audited results will be included within the 10-K filing.



SPS COMMERCE, INC. AND SUBSIDIARIES
NON-GAAP RECONCILIATION
(Unaudited; in thousands, except per share amounts)

Adjusted EBITDA
Three Months Ended
December 31,
Year Ended
December 31,
2023202220232022
Net income$19,011 $15,915 $65,824 $55,134 
Income tax expense7,330 4,851 19,739 16,190 
Depreciation and amortization of property and equipment4,667 4,438 18,631 16,421 
Amortization of intangible assets4,998 3,832 16,116 11,768 
Stock-based compensation expense9,411 7,763 45,508 33,399 
Realized gain from foreign currency on cash and investments held(1,201)(984)(1,726)1,026 
Investment income(2,288)(864)(7,660)(1,670)
Other28 — 1,198 — 
Adjusted EBITDA$41,956 $34,951 $157,630 $132,268 

Adjusted EBITDA Margin
Three Months Ended
December 31,
Year Ended
December 31,
2023202220232022
Revenue$144,965$122,018$536,910$450,875
Net income19,01115,91565,82455,134
Margin13 %13 %12 %12 %
Adjusted EBITDA41,95634,951157,630132,268
Adjusted EBITDA Margin29 %29 %29 %29 %

Non-GAAP Income per Share
Three Months Ended
December 31,
Year Ended
December 31,
2023202220232022
Net income$19,011 $15,915 $65,824 $55,134 
Stock-based compensation expense9,411 7,763 45,508 33,399 
Amortization of intangible assets4,998 3,832 16,116 11,768 
Realized gain from foreign currency on cash and investments held(1,201)(984)(1,726)1,026 
Other28 — 1,198 — 
Income tax effects of adjustments(3,906)(3,063)(19,983)(14,639)
Non-GAAP income$28,341 $23,463 $106,937 $86,688 
Shares used to compute net income and non-GAAP income per share
Basic36,831 36,093 36,646 36,117 
Diluted37,640 36,915 37,475 36,953 
Net income per share, basic$0.52 $0.44 $1.80 $1.53 
Non-GAAP adjustments to net income per share, basic0.25 0.21 1.12 0.87 
Non-GAAP income per share, basic$0.77 $0.65 $2.92 $2.40 
Net income per share, diluted$0.51 $0.43 $1.76 $1.49 
Non-GAAP adjustments to net income per share, diluted0.24 0.20 1.09 0.86 
Non-GAAP income per share, diluted$0.75 $0.63 $2.85 $2.35 


EX-101.SCH 3 spsc-20240208.xsd XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT 0000001 - Document - Cover link:presentationLink link:calculationLink link:definitionLink EX-101.LAB 4 spsc-20240208_lab.xml XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT Security Exchange Name Security Exchange Name Title of 12(b) Security Title of 12(b) Security Written Communications Written Communications Local Phone Number Local Phone Number Trading Symbol Trading Symbol Entity Incorporation, State or Country Code Entity Incorporation, State or Country Code Entity Address, State or Province Entity Address, State or Province Pre-commencement Issuer Tender Offer Pre-commencement Issuer Tender Offer Document Period End Date Document Period End Date Cover [Abstract] Entity Emerging Growth Company Entity Emerging Growth Company Pre-commencement Tender Offer Pre-commencement Tender Offer Soliciting Material Soliciting Material City Area Code City Area Code Entity Address, Postal Zip Code Entity Address, Postal Zip Code Document Type Document Type Entity Central Index Key Entity Central Index Key Amendment Flag Amendment Flag Entity File Number Entity File Number Entity Address, City or Town Entity Address, City or Town Entity Tax Identification Number Entity Tax Identification Number Entity Address, Address Line One Entity Address, Address Line One Entity Address, Address Line Two Entity Address, Address Line Two Entity Registrant Name Entity Registrant Name EX-101.PRE 5 spsc-20240208_pre.xml XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT GRAPHIC 6 datasheetsimagea.jpg begin 644 datasheetsimagea.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" !( 00# 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#]4ZJZIJEG MHNGSWVH7,5G9P+OEGG<*B+ZDFEU+4;;1]/N;Z]G2VM+>-I99I#A451DD_A7S M)8#5/VLO&TLUP;C3OAMI,V%MU8HUW(.@)'\1&"?[BG Y;)]7 X'ZRI5:LN6G M#XG^27=OH?/YKFOU%PP]"'/7J:1C^L*R6R?[B]2>^#D\\KBMJT^!5SK($WC/QGKGB.=N6MK>X-G:#/4"./' MTSD?2NWU#5/#7PM\+QO=36>@:+:*(XUP$4=PJJ.68\G !)YKQKQ-^VIX5TW? M'HNEW^M2+TDDQ;1-]"6[45Z4UNO.2DV>V>$_!FC>!M,;3]#L5L+1I#,R!V W,_\ X]E3_P!\5F_\(/\ &_XK?\?Z M:TUK)]Y=2G^R0X]?*8KG\%-=;X>='C;!66'R?"SK6T M2C&T?U:_\!/L^Z\;>';&8PW.OZ7;RCK'+>1JP_ M6I:W<%];I/;31W$+C*R1 M,&5OH1UKXZL?V(_$\UN&N]>TJVF//EQB20#\=H_E7+:Y\/\ XF?LXW0U>TNI M(;'> U]ILIDMF.>%E0@>WWEQGH:<5Q3XKS?!+V^8 M9;*-+JU*[2[M6_.Q]Z45Y)\!?CW9_%W3Y+2ZBCL/$5J@:>V4_)*O3S(\\XSU M';(Y.:];KY/%86K@ZKH5XVDC]#P&/P^9X>.*PLN:$OZL^S04445RGH!1110 M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 ?-'[6?C M6]U;4-$^&^BMNN]4ECDNE4_>W/MBC..Q;+'Z+7NG@SPKIOPU\%V6DVNV*ST^ M#,LQ&-[ 9DD;W)R:^9_AO-_PLK]KO6-7D^>#36N)HU;ILB MXS^;*WUKZOUC M3(M:TB^TZLG)TX7Z0AV[_537@^H?LD_$33 M]72,=_5M._JF?E5'$8G*E4QV M;Y6ZM1SO*I4VUV44XM>C5UMTL?HCHOAO2/#<'DZ3I=GID6,;+2!8@?\ OD"M M*O@O3/&OQG^,$)M=*O\ 5[^WA"PNUCMMHP<='D7:"3U.YN]52HZ5;%1]J^F[_ !:?X'W% M3CV%&@J^%P$W06G,_=BO2R:_%'Z05#=VD%_:RVUS#'<6\RE)(I5#*ZD8((/4 M&N-^#_CB7QM\*]#\1:FT<$\\+"XD)"INCD:-F]!DIG\:I^)OV@OA_P"%=ZW7 MB6TN)EX\FQ)N6SZ?(" ?J17R'U+$^VE0IP%'+J.7_:V#Y)5')I*WV97]YV5HVN[O:R.\HKSW2?BYG6M/TKQ%X:U M7PM".2WFDQD1B1&(#D9P"!G%+J7Q8GDU^_TCPWX6U/Q/-ITGDWE MQ;O%!;Q28!,8DD8!G (R!TR*/J.(YN7EZ7O=6MMO>V^FX_[6P?)S\_6UK2YK MVO;EMS;:[;:GH-%^UNM]C8HKS%_C1>6<(OK_ , ^)K'1N";QX(W>-3_$\*N7 M4#J>"1Z5O^+/B;IOA:2PM4M;[5]8U!/-M=*T^ M<.G=V5L!%'Z:>NUDTF[O16O=['7T5YW8_& 6VJ M65AXG\.:IX3>^<16MU>^7+;22'[L9EC8A7/8-CH>:G\7_O!/CK1/#>I0R MQC5(]ZWV1Y4)+;%#^@+8&>@W"CZCB'/D4+MIO2SNEO9K1_(/[6P2INK*I9)J M+NFFF]DTTFK^:7<[VBL?Q=XJL/!/AN^UK4Y/+M+2,NV/O.>BHH[LQP![FN'O M/CO8V?PET_QV=)NY+6\F$*V*,IE!,C1]>AY7]:FE@Z]>*E3C=-\J]7T-,1F6 M$PLY0K5$G&+FUVBG9O[SU"BL[0=?L?$NAV>KZ=<+<6%W$)HI1T*D=_0CH1V( M(KCO _QHTGQ_>>+$TNWF>UT':?M3$;+H,)/FC]LQ-@GKD5$<-6DIR47:&_E= MV_,TGCL-3E3A*HKU+\OG9%;Y]6UFY:UCTE9XO-C]=$LOQ$9JFTK[6YH].^NFW4XHYS@ITW54GRI)WY)I6;25KQUO=62NV>B4 M5YF/C--I$UN?%/A#6/#%E/,L(U&UK-:;ZK33KVZF\ MZ::OMHTGKTTU>B.KHK@-%^*ES<:S9Z;K7A'7/#\EZ_EVUQ- M$L\#-C(5GB9MAP"?F&.#SQ6=_P +BU>^U;6;31O NI:S!I=])I\MU!=0(ID3 M!( 9@>C*?QJU@,0VU9::WO&W;>]OQ,GF^#C%2YGJ[6Y97O:_PVNM-=4>H45R M.@^,-6\\'7^E2K(5$,UQ"Y(P#NRK8QR1^%%<\L/.+L[?>O\SLAC*52* ME&]G_=DOS1\Q?L=7!D^,'B$S'$\FG3$YZD_:(B:^COBW\8]%^$.D0W6I"2ZO M+DL+6QA^_+C&XY/"J,C)/KP#7RO\.;A_A1^U$]A=CRH'U";3VSQF.8GRF^A) MC;Z5]5>-?@KX6^(GB*UUCQ!:S:A+;6XMX[1P MW]I4\1BKNE*">F[\OR^1^6<*3QW]AU\'@.58BG4E'WME=J[>C\[:;H^:O$/[ M9GB_6Y?L^@:39:3YAPGRM=3Y[8)PI_[XKSSXB>%/'5YI \;^-/M$;7EPEI#] MO^2>3*LPVQX&Q %/8F*?OR7%PZ_[H15/_CS?E7=E.:8>IC:>&P&'4$[W;UE9*_Z=V>5 MQ'D&-HY76QV;XV564;6BM("?@_EI>:C+* M'NYECW*JH@ R>>5;IZUX[^TY\9+'XJ>(K"UT;=)H^EK(L=PZ%3/(Y&Y@#R%P MJ@9YZU9^'?[)?B7QQI-AJ]SJ%EI&EWD:S1LVZ68HPR&V 'EAO98:*BFV[REK=.W1-Z[=M2?P;\#?B1\4="TZ2, M/!H*+BSDU2Z*0JN24K M>QD8DD'V /O7E/\ PU5\0H]%M+&PN+'3H+.%(!+;62D[5&%SOW*.!V %>^?L MP_'+5OB@FIZ5KXCFU*QC29+N&,)YT9.#N4G'/)FU3.\/0G7BXP@ MGM'>S>^J_(]'AVCPKC,52PLXU*M5K1S^%M+9)/RT3372YWOQ*97!C9<\9W <=\X[UTE87C3P7I7C_ $";2-8A:6UD M8.K1L4DBD'W71AT8?_6.02*^9P\_9U8SMO6QPVL7_Q+^'VD76IW-SH?B_2M/B:XN-T+V-XT2#+%2"T9( )Q@9_2L/Q M;XV*?%+P)X@TO1[_ %R.]T&XFBM;)5\[9(8F#$,P' (SSWK>E^"-_J5L=.UC MQ]XAU70F^62QD:-&F3^Y)*J[F!'!Z9KKSX#L%\5:/K<+26[Z78R6$%K'@1"- MMOMGC8 .:]U8G"TGS.TI6DG9.*:<;)-::W[)>KZ?)/ YA7BX1YH03IM*4E.2 M<97;3][2W23=WT77A=9F\1_%J\T*P/A.^\-Z59:G!J-W?:K)&'(A;:W_ ,%Q;:U?:GX7\3:IX3DOY3/=VMGLDMI9#UD$;@A6/M^NQH>!?' M&KZGXAU7PSXETZUL==T^&.Y\RPE,EM9_J_M7D?Z-GMG=NV]\UU'@?X>VO@N2^NVO[W6=8U J;O4]0D#R MR!0=J@ *@R<*!W[UI>+O".E>.-#GTG6+;[39RX;@E61A]UU8Y:SMYQLVD_-W2;^XWEA,9B,N]E5=ZBDI*[Z1FI1C)I6U249-+[^NS7 MEG@PI_POSXB"\Q]N^R:?]BW_ 'OLOEG?L_V?-ZXXSBE_X4?=7$*V-]X^\47V MBC -E)+OA;I?BQM/N5NK_ $?5].3RK35=.N"E MRB?W&9L[U/<-G//J:=/ZO0YZ?M+J:M=)Z:IK?TL[=.XJZQN*]G6]ARNE)22< ME[WNRBUI=*W-=-O5K5++OB=HNC>(8?M*WG@J2*\1NN_P ^+)!/1@W(/8@5U&G_ 9CFU>RU'Q+ MXCU;Q;)8R>;:VU^R);12#[LGE(H#..Q.>IXKJ)O!]M-XYM_%!FE%Y#I[Z>(> M/+*-(KECQG.5'>MZ>*I86FJ5.=VN9W5UJTDK=>FKT_ Y*^ Q&85G7K4U%-P7 M*VFW&,FVY6T^U9*[ZZZV7F_A7P'XKU[Q!86/C1UN=!\*/_H,F:X_2O^3EWJ M7T4QV^8[+,90&XQC+8X'2M*69*5G5TM*+LEIHIW?S\FX M5(MR>MVZ?*K]E&+7RN]6V^.USX;>)M-U>]\*>&W^R^"/$RY;CO5CPGI-IH/CKXKZ=80):V5KI6F10PQCA5%M, *]GKFK;P+:6W MB#Q1JRW$QFU^"""=#C;&(D=%*\=2'.?9)+RKX1Z;\2Y?AGX;?2M:\.P:=>,/%'B?XJ2W/PWN_"\?A.ZOXHYI[B_U".8_9 MA("[0A%(D;Y<<'C/..HZ;PPL,7[07BZ*\_X_%TBQ&F^8VD'4J2"""."I!!';I53QK\,]-\^668R%9XAR]K.,HM.32YHI37*U%))QYY-.UF[7:Z=?7@G@.Q\<7. MN?$!O#.J:-96 \3W8>/4;2260R;(LD%6 QC;QZ@UW.B_"6:UUJSU+6O%VN^( MI+%_,M;>YG6*!& P&9(P-[ <]TSQKKVC)J=[)?S6MF MT0C$KX!(RA/10.O:HPT\/AU4IJHGS):N+:W[6O\ @C3'4L9C)4:KHRCRMZ*: M4K.-KW32WZ)L['PA;^(K;395\37EA>WYF)233H6BC$>U< AB3G.[GT(HKG+/ MX8ZK:QE'\?>(K@DYW2/#GZ<)17%4IT9R&?ME?#6:VU"R\C['V6M\8PPL1NDP,"9?4-W]#D>F?3-4TNTUO3;G3[^W2ZLKF-HIH9! ME74C!!KXU^(W[.?BWX4>(%U_P/)>ZA81.9(I+/F[M?\ 991RZX[@$$9R!W^F MP=;#YO@XY?BI\E2'P2>UNS_KMVU^$S/#8WAS,YYS@*;J4:O\6"W3_F7Y_??1 MW7VI7@'QO^!>N_&+XG:/+YL>G^&K.R6.:[9PTC.9'+JB#G.-G)P/KC%>6:/^ MVAXPTNU-MJFDZ=J-S'\IF97A?][>?R KHP60YK@*SJT^6+2:YF]%?JO^"CCS3B[A[-\*L/652:;3Y(QL MW;6SZ6[V?S/M2SM;70]+@M80EM96D*Q1J3A8XU &3V KA/&?QH^&^DVLMI MK6NZ9?H>'LXP+S)'8J@8 _6OE^/X'_&/XG2++K1O%B8Y$FN7Q"K_ -L\LR_@ MM=UX;_8>^Z_B#Q-_O0:;!_*1_P#XBN;^R\LPKYL7C+OM#5_?K^2.W^W\^S"/ ML\MRWECWJ.RM_A]W3T;,WXH?M0>'M4\':CX7\&^'WMX;^,V[SS0I#&JMP2D: M9R2. 3C'I7I/[*7PEN_A_P"%[O5]7@:VU;5]A%O(N'@A7.T-Z,Q))'LN>176 M^!/V>_!'P]N8[NPTK[7J$9!2\U!O.D0CNH(VJ?=0#6+\:_C@/"1'ACPNAU?Q MK??N8;:W'F?92?XG _BQR%_$\=2IBJ>+I_V;E4&HR=Y2D]7;J^R77^KNA@*V M75EGG$-6+G!9>R M+RD2?![X2S_ M @T"?6+Y(]6\7ZM+&MY-+,0(_,D V!]K$_,P9CW(]A7I?AOQ,?$)E!T^YL- MD44P^T8^15NTL[>PA$5M!';Q#D1PH%7\A115N1\;Q)F^) MRV5"EA[+VC:;:NU:VW3KU3,6^D^+7Q.4V]M:VWPWT63A[B:47&H,O?:%X0^W MRD>M=?\ #3X,^'?A?#))80O>:M/DW&JWA#W$I)R>?X03V'7OD\T45PU\=4<7 MAZ:4(=H]?5N[?S9ZV$RFA&I'&5VZM6VDIN]K_P J248_))]V=W1117E'T 44 M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111 $0!__V0$! end XML 7 R1.htm IDEA: XBRL DOCUMENT v3.24.0.1
Cover
Feb. 08, 2024
Cover [Abstract]  
Document Type 8-K
Document Period End Date Feb. 08, 2024
Entity Registrant Name SPS COMMERCE, INC.
Entity Incorporation, State or Country Code DE
Entity File Number 001-34702
Entity Tax Identification Number 41-2015127
Entity Address, Postal Zip Code 55402
Entity Address, Address Line One 333 South Seventh Street
Entity Address, Address Line Two Suite 1000
Entity Address, State or Province MN
Entity Address, City or Town Minneapolis
City Area Code 612
Local Phone Number 435-9400
Written Communications false
Soliciting Material false
Pre-commencement Tender Offer false
Pre-commencement Issuer Tender Offer false
Title of 12(b) Security Common stock, par value $0.001 per share
Trading Symbol SPSC
Security Exchange Name NASDAQ
Entity Emerging Growth Company false
Amendment Flag false
Entity Central Index Key 0001092699
EXCEL 9 Financial_Report.xlsx IDEA: XBRL DOCUMENT begin 644 Financial_Report.xlsx M4$L#!!0 ( *V"2%@'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 " "M@DA80*?_]>X K @ $0 &1O8U!R;W!S+V-O&ULS9+! M2L0P$(9?17)OI\VJ2.CFHGA2$%Q0O(7)[&[8I@W)2+MO;QMWNX@^@)!+9OY\ M\PVDP:"PC_02^T"1':6KT;==4AC68L\<%$#"/7F3RBG13 MS(Y 5M4M>&)C#1N8@458B$(W%A5&,MS'$][B@@^?L>HX05W6(/0\ M,1S'MH$+8(8Q19^^"V078J[^BMW!= M8M,A3:^24WP,M!;GR6^K^X?-H]"RDM=%)8OJ;B-K-9^;C]GUA]]%V/?6;=T_ M-CX+Z@9^_0O]!5!+ P04 " "M@DA8F5R<(Q & "<)P $P 'AL+W1H M96UE+W1H96UE,2YX;6SM6EMSVC@4?N^OT'AG]FT+QC:!MK03621A'^_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 *V"2%B#GU%]700 "41 8 >&PO=V]R:W-H965T&UL MG9AA;^HV%(;_BI5-TR:U)0F!E@Z0**4;NI>6-6Q7VK0/)C%@-;$SVX'R[W<< M:,)VPPG;%Q*'G)?'/O9[;/H[J=[TAC%#WM-$Z(&S,2:[;[5TM&$IU3V*TLIWVQC&@\#P"%1 MKHU,C\% D')QN-+WXT"VO"'NW17Q73_X9W@+ M"$H,O\3P"[TVAD'^&"VU49"H/^N(#@I!O8*=O?L'5R0T,'9$*C*6N3!J#]>XEA@7?YP@A+TE MA$\\8>0Y3Y?U:Q+7<%WONAWQ_-O$;Q>B=>[!&\4Q[#4]1692VUH0G[GV=DDXH*=3H".F^=6?NK^)[3C M#?D,[Y$747#+,.2PL MSW5=C+ J#1[J[%\1ENMVKN26BZA^2''-V3.&5E4%#_?U?Z.-;0O(%G(G:JEP MN1D7@M%,)EQC>%6]\'";+W!&L%D[NRH:!+H>NBBJXN#AKOY91K \YQLI,'MK M$ G:G>M>@$^JJB)XN&M_4=P8)F!@TC071W/3M52XT(HFFF%(50GP\1 M-URLR0QFN.(TJ>7!51IYJA+@X8X]5^PZ@N%AL,0.>Q\F8MBEO:Q69_*'ZS62 M5>[OX6[]%=E4ZQS(&@%QV29 ORH"/N[8"VZ@D,L5\?SOES^ ;4UP,>->Z%H;*=?N$^7 MLG;R-0C [FV,D9P@2K("Y6PE-"U[4HN$ C2F7U_D4' M@3' */#\*:S(=_*)U8\/+@4;",_M^=U>KXZL=7+HM7\@S*A-BR8)6X&:>W,+ MXNIP)C\TC,R*<_!2&CA5%[<;1L$P[ OP_4I*\]&P1^ORGY'AWU!+ P04 M" "M@DA8GZ ;\+$" #B# #0 'AL+W-T>6QEO%DN7/ZZZ>S;"=I=67=A['-HN6/O.-%Q[I#)6,>=56R=M8SDK M6W!2,EG>W&2)8D+38JT[=:=<2PZFTVY#;VA2K"NCSY:4!H-?RA0GCTQNZ)9) ML;=B6,N4D*=@7H+A8*2QQ'DJ?$,78&F? KP(&K XU7=>&18/QA<0&>7=J?$,:\M.B^4M/3L,/S[)WMB2 MVSG-@DZF8BUY!72LJ(_PZTR3 .B<45XH!:N-9@.'R6,4?-@#E_(!6OBMNHK= M5R3TXE,);2"PU4GTA$8QA D*Q+^,%F)?A+W]K;"D$8_&?>S\;O2@?^^,X_>6 M5Z(?]+Z:\V/1%WATUC3R]$&*6BL>]O[+"8LUF_S(T5CQY+/!I!R\@5M*'KEU MXG!I^6%9L^.]FZ:IKW#.RW^0\Y^M<\TUMTQ>DO:C_S=7^2V,D_'T7!S1JP,Z M6PEY7>>9 ]IV03NA1.XJRY/K%.?7A'=O["_PJOE]?\HIUTNUF<$// M\A=>BD[E\ZI[J,NXZBQ_AOMHD\%G'!QR>(W?# M$T%^@2O&+(=/EB>N$_N MG_A.\SQ-LPRKZ'8;9;#%ZI9E\!>/AG$##RP/9'I;K?%NXQ/R^AQ@/7UM0K"= MXI.([12O-2#QNH%'GL>[C>4!#ZP+V.Q _G@>F*FX3YI"5S%NV G&D3S'$)C% M^(QF&5*=##[Q_F"G)$WS/(X %F>0IA@"IQ%', ; 4/2='@//GL?)=-[*CG_ M5U/\!%!+ P04 " "M@DA8EXJ[', 3 @ "P %]R96QS+RYR96QS MG9*Y;L,P#$!_Q=">, ?0(8@S9?$6!/D!5J(/V!(%BD6=OZ_:I7&0"QEY/3P2 MW!YI0.TXI+:+J1C]$%)I6M6X 4BV)8]ISI%"KM0L'C6'TD!$VV-#L%HL/D N M&6:WO606IW.D5XA-/E_G;@2=&A(E@6FD7)TZ(=I7\=Q_:0T^FO8R*T>EOH^7%H5 J.W&,E MC'%BM/XU@LD/['X 4$L#!!0 ( *V"2%BJQ"(6,P$ "(" / >&PO M=V]R:V)O;VLN>&ULC5'1;L(P#/R5*A^P%K0A#5%>0-N0I@V-B??0NM0BB2O' MA8VOG]NJ&M)>]I31=B;FJ19IZFL:C!VWA'#02=5,3> MBD(^IK%AL&6L <2[=)IEL]1;#&:Y&+6VG-X"$B@$*2C9$7N$2_R==S Y8\0# M.I3OW/1W!R;Q&-#C%B/%*0:S;%4S.Y68R#/; @L4?>M>9_+2' MV#-B#Q]6C>1FEJE@A1REW^CUK7H\@RX/J!5Z0B? :ROPS-0V&(Z=C*9(;V+T M/8SG4.*<_U,C5146L*:B]1!DZ)'!=09#K+&))@G60VY6= ;N\N@#FW+()FKJ MIBF>HPYX4P[V1D\E5!B@?%.9J+SV4VPYZ8Y>9WK_,'G4'EKG5LJ]AU>RY1AQ M_)[E#U!+ P04 " "M@DA8)!Z;HJT #X 0 &@ 'AL+U]R96QS+W=O M[IFBG#S^0W1UW6E\./VR./ /,+Q=Z*E%9"E* M%1KD3,)HMC;!4N++3):BJ#(9BBJ6<%H@XLD@;6E6?;!/3K3G>1,) MKM\,<'AT_@%02P,$% @ K8)(6&60>9(9 0 SP, !, !;0V]N=&5N M=%]4>7!E&ULK9--3L,P$(6O$F5;)2XL6*"F&V +77 !8T\:J_Z39UK2 MVS-.VDJ@$A6%3:QXWKS/GI>LWH\1L.B=]=B4'5%\% )5!TYB'2)XKK0A.4G\ MFK8B2K636Q#WR^6#4,$3>*HH>Y3KU3.T.EY&TWP39G 8ED\C<+,:DH9 MHS5*$M?%P>L?E.I$J+EST&!G(BY84(JKA%SY'7#J>SM 2D9#L9&)7J5CE>BM M0#I:P'K:XLH90]L:!3JHO>.6&F,"J;$#(&?KT70Q32:>,(S/N]G\P68*R,I- M"A$YL01_QYTCR=U59"-(9*:O>"&R]>S[04Y;@[Z1S>/]#&DWY(%B6.;/^'O& M%_\;SO$1PNZ_/[&\UDX:?^:+X3]>?P%02P$"% ,4 " "M@DA8!T%-8H$ M "Q $ @ $ 9&]C4')O<',O87!P+GAM;%!+ 0(4 M Q0 ( *V"2%A I__U[@ "L" 1 " :\ !D;V-0 M&UL4$L! A0#% @ MK8)(6(.?47U=! )1$ !@ ("!#0@ 'AL+W=O&UL4$L! A0#% @ K8)(6)>* MNQS $P( L ( !? \ %]R96QS+RYR96QS4$L! A0# M% @ K8)(6*K$(A8S 0 (@( \ ( !91 'AL+W=O M7!E&UL4$L%!@ ) D /@( /03 $! end XML 10 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 11 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 13 FilingSummary.xml IDEA: XBRL DOCUMENT 3.24.0.1 html 1 23 1 false 0 0 false 0 false false R1.htm 0000001 - Document - Cover Sheet http://www.spscommerce.com/role/Cover Cover Cover 1 false false All Reports Book All Reports spsc-20240208.htm spsc-20240208.xsd spsc-20240208_lab.xml spsc-20240208_pre.xml http://xbrl.sec.gov/dei/2023 true false JSON 16 MetaLinks.json IDEA: XBRL DOCUMENT { "version": "2.2", "instance": { "spsc-20240208.htm": { "nsprefix": "spsc", "nsuri": "http://www.spscommerce.com/20240208", "dts": { "inline": { "local": [ "spsc-20240208.htm" ] }, "schema": { "local": [ "spsc-20240208.xsd" ], "remote": [ "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd", "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd", "http://www.xbrl.org/2003/xl-2003-12-31.xsd", "http://www.xbrl.org/2003/xlink-2003-12-31.xsd", "http://www.xbrl.org/2005/xbrldt-2005.xsd", "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd", "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd", "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd", "https://xbrl.sec.gov/dei/2023/dei-2023.xsd" ] }, "labelLink": { "local": [ "spsc-20240208_lab.xml" ] }, "presentationLink": { "local": [ "spsc-20240208_pre.xml" ] } }, "keyStandard": 23, "keyCustom": 0, "axisStandard": 0, "axisCustom": 0, "memberStandard": 0, "memberCustom": 0, "hidden": { "total": 7, "http://xbrl.sec.gov/dei/2023": 7 }, "contextCount": 1, "entityCount": 1, "segmentCount": 0, "elementCount": 24, "unitCount": 0, "baseTaxonomies": { "http://xbrl.sec.gov/dei/2023": 28 }, "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-20240208.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-20240208.htm", "first": true, "unique": true } } }, "tag": { "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": [] }, "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": [] }, "dei_CoverAbstract": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "CoverAbstract", "lang": { "en-us": { "role": { "label": "Cover [Abstract]", "documentation": "Cover page." } } }, "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_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_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": [ "r1" ] }, "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": [ "r1" ] }, "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_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_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": [ "r1" ] }, "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": [ "r1" ] }, "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": [] }, "dei_PreCommencementIssuerTenderOffer": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "PreCommencementIssuerTenderOffer", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Pre-commencement Issuer Tender Offer", "label": "Pre-commencement Issuer Tender Offer", "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act." } } }, "auth_ref": [ "r3" ] }, "dei_PreCommencementTenderOffer": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "PreCommencementTenderOffer", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Pre-commencement Tender Offer", "label": "Pre-commencement Tender Offer", "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act." } } }, "auth_ref": [ "r4" ] }, "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": [ "r0" ] }, "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": [ "r2" ] }, "dei_SolicitingMaterial": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "SolicitingMaterial", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Soliciting Material", "label": "Soliciting Material", "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as soliciting material pursuant to Rule 14a-12 under the Exchange Act." } } }, "auth_ref": [ "r5" ] }, "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": [] }, "dei_WrittenCommunications": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2023", "localname": "WrittenCommunications", "presentation": [ "http://www.spscommerce.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Written Communications", "label": "Written Communications", "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as written communications pursuant to Rule 425 under the Securities Act." } } }, "auth_ref": [ "r6" ] } } } }, "std_ref": { "r0": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b" }, "r1": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b-2" }, "r2": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "d1-1" }, "r3": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "13e", "Subsection": "4c" }, "r4": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "14d", "Subsection": "2b" }, "r5": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Section": "14a", "Number": "240", "Subsection": "12" }, "r6": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Securities Act", "Number": "230", "Section": "425" } } } ZIP 17 0001092699-24-000006-xbrl.zip IDEA: XBRL DOCUMENT begin 644 0001092699-24-000006-xbrl.zip M4$L#!!0 ( *V"2%B:WWJ17C, !&= P , 97)?,3!K,C,N:'1M[7UK M<]LVVNCW\RMPDMVN.P.IO).RT\PXMMMJ-K'SQNGIV4\[$ E9;"A2Y<6.^NO? M!R"IFR5;I&41E)#,V+)(@@">^Q7O1NDX>/]N1(GW_O^\^[^=#KJ,W&Q,PQ2Y M,24I]5"6^.$=^L.CR3?4Z11W7423:>S?C5*D*9J!_HCB;_X]R:^G?AK0]^4X M[W[*_W[W$W_)NT'D3=^_\_Q[Y'L_O_&I06Q[:*J&IU%C.- 'VH ,C8%+#2=!K0G]^,_; SHNS]I[HU2<\>?"\=G:J*\L\WR_>1^ YN M'41I&HU/E:[B3%*XPQ_?(1*D/[_Q2$J2$:5IXH_)'27=/R=W;U 2NQLOY>,6 M[[:UR?>SY7>8,)M[&J>^2X(."?R[\#2EW]/BK0Z_D#^+-]C MN',8 42*RVX41/'I6X7_.V-7.D,R]H/IZ;\NX*E![/\+)R1,.@F-_6%^0^+_ M34]5#2;'_WPHY@_/!WY(R[U4-1,V\.K__];_T/^*>KUW/[&[U^U_ON8TFL"F MJC#JABD#N./W+Q[EY0M75Q9NK"Z<8\X%W$'<](>WIG/VW*274*K!B7.(]<-[ MFJ11C+[0@*1^%"8;I]_P3+^.*/H09#09^7&*?HVC;"+J5/LQZZZT5C4*1NJ MV=%4NV/T+.WQ'+<3%L9:8?$,Q;H@I6B\^]7RD4[]%&YWGV:[MI&##,3J>$QC MEP(A3Z(X3= O41:G(_0_&8EACHB$'OK%3T"VH/]0$C/AJ\,7(0E='[[[0I,L M2+Y;=W,7U :N^?:!A'8Y0" M*QTNCP%[!,,\IIX*PGA55=HG!_C4O[Z^.O]\\[%_B]$O=!##LJ8_O%4MY.0O+LG9]8L?,2(H M 44=LD/84=3X@?(#:+,0S#;>]^E"08$\\@4-C^,LM %U7T#B'FJYRL.E=M"7:,4I= MT I?$P77Z;XYE_"H&\5* MI-AB#1/B>+ M_U+PY0>2H'^HAME5$+PR ,1A/&8C?]8Q"#@0>S'02QK!DYJVY9,:!D8T#*B; M,K' )$$N"I^@+PG%YZ%85\YVY:[7WO5KF@*J QV4Y--;H $0LO]0NJ:*)K#9 MGA]DS ^5C(!BEDDGG \"(/F':G9[*V,8^N,QGB8Q"=07 #4*.[^>GW\N@?)X MZSFLE:YMK@#RV0<9?)6NI3\#/,D(ZT/OW/LS2]B.7WWH?[T\7]%U5X48 U5, M20+W:\H_N2 S%N78(GCK4-L3*I1 ALP&W6NSB5Y3>3R3Z%M)&S-U:T$6E)C\ MK*&RHID9IK+=**@8H"T*6D4+4SQ0KU79&!^:J6Q/04DP&=]R:*RJDVJ7%'Z3+.KKKS-Z*U3',O7Y6.10<#5##_RF$KQ!.VRRVR*G>B> MQAT^V?D4)"8UH#]J7:>6_JAU=;/4'R5_:%RO?);N%U1,1H[<5V+:76NCCED1 MIMO%E.PW6WK2&U"_E+-^6+#(I?"11\=1F*0Q3^"(PKN(L;0D3.+K/)P<#3!'H82XGOH M8D3@1P28$\*@%UM* M49Q&<&\)Y8@[\D$9\]AR89]6[3T&Q&$6!#F-%L$N'E/!@*W)Q&>;52#JF+AQ MA+QI"'-VD^YN&=EJ#LR&F$HC094_:!D(A7T$RA@"SV=Z2H%N#R.@.TZB0<28 M(J +;/M?F9_X/.F#;_(2^?H\,61NR6=I!K(0+@"0:'@'WX4Y10$CI:G/ ZZ3 M*!\.,2@ NR H (,4%"A@[@"RA,\(;-1O-%TFL'_[8W1-@P0(#UW\\IB\:B#T M;J^M9&]Q\5VN]C3FJ3/W=&,N66F/SQ\A@R1B.D;5]+,-,US\.8KG&L<=[0Q M#'[KD"%0TBD)'L@T67G1R_+AGIS0UA>95VWH3D]XYWR M$Z:?@)&9,^C!+!H!^M)=$<8P%N,87.LUK*Y=?K-37Y($7 7OQII(TO/05+J: MQ8$('VR,'GP0Y$P1FLZ&RN?$-$T0_,#M\[$3$,QIDI9J^A#I]AP'BELD*@CF MGM@*'VRMP =;WZ6C0<*OJB-B"V@9VH)WL8AQS3FQA-Z>J<\ER0CGM-89<,<0 MMUS")/FS ')+,Y)3%W_V:>,.;!S/P09@\'O_UWEP69"G TJ MG$NQ3ZENBJYN6JK5-9=XG+68C,.B(D L"0WSN(@YBXNP>,CNLRXD;%];(U6[ MMIF;%5W;>9%&ZBSD>TB-M*T:J=Y558X/\.&I5&T)0"%44M71@>PX_3KF9CYM M\8"9:DMV+0"-UM=;37-1!=U6;P4!;M137%5GGKRQ==F&J-EYFVM0AU'\0&*O M$T31-QYRHB3)F(AC>\7H+7?Q3MDUDB39>))'6/SP/@KN02#Z=Z$_]%T"T_X6 M1@\A?S +\\^QGWQ+BF]<&J?$#]-9*).X:;90430F4W1/XBE\2&$]!.1P%[$I MSDKC(IA6&*6HH&Y$6&E8%+I^4" "*XU;LZ994L2\C*E<)F8"(\BX(%]A07CU M"Y2#+)_\ND2+(K^FB,&/HR0%&0133%D\=YYLLV$J@'4NR1@RI@P?6408=HB5 MS[,184UP&48LMA'NHN.$ZRPL*IN%+#\@"OD+Z'#(:R:]C):3F6__E$_?#T3JT/P'K;)LY$Y\\5\Q,AEJ68#_]^YM%^XQ5*VCJW9',4#E)BFK0 1<5IFY%8*2E@#F^2PV MFV.KSNL5=05-NN,NNO@*:X7-0:D_IEWT.7\Y2;ZQV_^,"KU@*0;_/T8>67?G M6\EFWMUQ,/O9$#K?P7U'T/E+SQ$+GX,!,^!<__**+0])-)HE;1LT7*O;WN9&Y .2[=W4/ M'#,79Y]S$93WF 6'F;[SL[()]<(;C&A##HVRXC:@$M1GDT!V)>P?!:)6FOG MMTZMW%+66:V6=><\DVR18S>&K(6#H2;7GRPNR :<&4L OUY##-;SO.+0$4J> E+46) VU5-P0"X7 D.68K@+'T23#D_26-_D*7<1 -S%3357$FEG9)" MT8BPU8PB8+H<;PB'D1^OI@SRBR.X.LO"ZVGKNF@D3"+.:R:X7X#KQ0EBR8O% M792GQ'^"#:5D$@4^0.$7!AZP;HL42S^'AY6><\NSK+Q=7//,V3[\%5(OX=O:O?^E?][]>H2]7 M7\_[']'GFS^NOB#FCF-Y<\EJ9ES1M")O^G$'>%&"8*9)?@;,8I8?W/$5R(VR M8= -,V%87A[+2\UI(((G8CXV?Q'@!3,Y\I^K!!^UR$D=I M[@Y@U,D'_5GB/:@3'NLF/98?\>W5&=ZK59G?D^X M0WH6@Y@7N7XJ?#NB>@&5W,#GN@CES2[S).@0$-OW>-'$W+$#1GC*;THPR[WF M!0L>13.5.N>\SWK1/FWG16,Z$&QJ[C!B$N,)+QY7C@8T8!*?:1Q<)4F>?&0V M_2RAPVQ)D',U#;9A3$*@/;9@C#Y$)/;8?"ZY0P]6BPL_6KEXD"1P"]/_2@_= M_*7LS@%K'\K=*#$-/78_XS=,;(M28NQ76'C*G.;)CR5O82C[*B&)\/D1>^,)63EP71D+U_ M876 \2Q"=4^7(B KF/S;]OC1;,5K"?C<@8\;%),:_VH,U=U3BB\*(-[@+DS&*:[%-)9C=3@ M@A$PXX,'">!NFL??LPDOT>#J61[!@/=X\P#&((J^(;9DSJ0)V#QI0;RLK&L6 M2H#),[BQK9RM8PBP >BRJJ6EI=#O;@#D?)_?0B:L(I%5DF0N+RLIWYS/! VF M)1?C[P;>R>YAY2KQ.G=W2XCUZ[/(F0"X X]'; :\FHXYA9FF30#F@R3U4U88 M!IO*G<8@@VCA \;K1G-)X&8!*51R!N_8F^$5CZGP:-$S<^*0\Y;#5D40,"D8 M.A=$G&TPW(YI#B<&13YH&I7QBM@KS(-M1&:.T3&SX0=_@@3)BY**($S@C_W" ME]A%_9E(*380S%2?/N3![Z5X%^6Z\W#8:75Y2><0KBT8E[W MMO2O>YQ/4&IB57H:/U[$X^XC>Z6Z)WUJRPO>=]4>8PDYC2>YLK+0G8"44V/R MLB0P\KTD//PTZY_?!E3A?GLB;8!E?L Z_H;+=]RKQBI5 7EY*PP60 6B1T74 M&A(_ M+B5,(=W[1=%]^D!9]'P,>SI*-E1JZWC-:V;TR8:9I2_PD&NQT(5"R Y7,N%F M.IX$T90"]Z$LD8W'PZ*DX$J>GX & UH-EV:%\EI(-;Z9154Q3XR#YP.0[Z#1 M1,/T 3A&%RVDX16NTU6&LR!0Y[QG2>.H1Y$\2M(:DBQ4IL8I;I(@SXN!M3E>)2_DBE=*PCL>YBCM@=U)CGJB <^L!@ 2?#^)%V)WEC'+=G@IR=G+>)R!91MR"4;BJ5Q;&'J>B$2U2\7)W *>U^6@E9243T$+!*BP\$PR W$HMAYC9 M6@M8G.W4 M]L_"GY(TM;,=-.T%X0'1@D\RW'7 X:Y6.>$K-_XOTJH_%FG5MS/GE@!*_*8, M]U4/%H_^\T0-/WR4*+X8X9KGA2^&AO(>6',W_K\2Q)US*XD,\'718B@O*\C= M=9@'&(I00QPQ:;/\)N9)9,,M1I-FX_!P DNYR?.RV;UE3*G(R)XUX9HRZ9C0 M><"5NWU MS-*[O.#2+6L@-M0]X.6BAP6_T9"X><"4AP4X1O+,_QQ6LWC?4E9:[G>>UT;, M5(XTS[%*67(40[A==%+IQKCXP\PBFW$BOKW(S M9MN3/')$>\41BLGRE@S]@!919YX!/H/92A%=T#M MH/Y3NC(AC )FNO&!6(G,/7 \O!2@8S9VG@!8H/LYCQ?!O .XE$UZ=P_8DMS$?EO,12]%QGS^VF."V.8&@ M!=IB!WJZJNP"UGO(3GY/20@SD!^ M_?#6[)WE##C*8$@/")Y^=^DD+=Q(/^[-6LG%T(PQQ*!Q,5KKKQ MVE/#JEK7=IQ:PSY]37>,5YEL;[L)_<3W-]]C &,R(>'/;_0W<[;*O86G"E(Y M&I3CS6[M/;I5FWQ'ZCHR6@5[#O%=$9>S50!HT84](X%=[,/C6X7>!^:]7UK_ MT2Q;JP+VQV:RZU)0L<^:7FW7W"YAYO9V4?QMAM[&A1:LGJLM3.RP?"C$9GQ6 M 3>>W<:7C%%QAI4A7CA&GH X"Z7L&][KS>X+'LU,BP!H+;BO++<69%Y[C!U1 M+>*_%6&!68:C>5R:I2S>DV#),[LLW+=:MH*$1N!_O&AMBVOBA[R+L2A-[6'% M456>"8VGJF6AIV>WAR>[4BV"LZ7;T=1G.8GI2PD"FT4 MMEJU]:\E'(&0S+2P;O8JXM@3<'XM7K:M#G)HX%&QH6K-@>7>[PI=]+.)&4T#:V%+:" H>U<:&UJ R5S!;%.IF3XEKRK)>[%=((JZ: MXB#.!E2N0-]RU8(2E:/IV*GL:*NT=,&[(TBL;1_66K:&>Y73D/:"M:\0E!"I M<]7'_OF'_L?^U_[5;=Z7\NO-Q;]_N_EX>?7E]H>WCJ;:9^CJ?W[O?_W/2[H< M+8!(!SAX4<;B("]O;[6MYK2;*8JM3NW"W]DFKWK9@ROPR< />-MGZ5QO$[*U MTJ:>U:1.R'1=.XH7&VCB+'5['63=V@1%7.9Y;C"A:4>"36*9V%BFJE@S&_0\ M'4> WAQG*V<8W@LH0U#Q:8CZ_1$!8^N8*UN[;Y 5FM+&$!Y"/VQQ#4B%MP17<5>OVY=F[ M+;2E+-S390-\4:%C8-L^E/[WPO*!)PS=HTSH[V&SLE8KK=[]61U841H$SY'I M!@ME?3LR?MN$; [NV36-(:D=[",&=BAM:H7D!/R @$>6Z5'J!)HF-0)18<,K M"+2SPU )1/>$2P_XHB[*SL^4'O##@JEN8J=R W+I 7]QI4TT'OOYZ;OY.>GP M!$R:ANZ!><.7QCCHXJG;-'*_C:( 2"+Y%V] GDYE]92X<0W/3R8!F9Z"?D^? MWII]W7GP)M:,]44AO [(Y5@,*EW:4\*"IFK%AZ"FE+@$_S6F),GB*;JM3?(M M=->=J)J#G9ZV_6&VTI5Z%+ Y#BE_#I-EQ8,D0!/B>QT_1"Z9^"FIUYN_A8+% MU&VL6 U6K4C!_W2VA6UA53V0E&)Q&<$7FA+XTD.4Q"%,^VBBJ9K9PXHANZ6* M"A^UIV--D_E6KZT(N&XVS@*2 @N(>'25]1:(Z8B&B7]/T1UP!W021$GR2!L[ M5,FC:?)T+E%A,R[SHXG)69:-#;NFXB#C MK$+"E!N#=LTJYE;$6?F[=5MLMK.0S\'#KMNSH>=VHX!1OKA'[2Z/K('N+O=$ M4(*NUQ1ZAQO3L/XGZ4'2PY+24JO=M #TP,7?3REK/ J_/?_^_3OX44YY3.([ M/RQGIG05AU-!OKP!>[)8:84'7PP3;NSG?[*13IE7W7>W\L4E6< :K<8T80VS M/41BBK*09)[/_P*1F(ZR!//ODVSP)W53E$:(>']F"4]7ZJ+SXN:X&(R=MXL& ME-5.!)D'%Q[\= 0V/=CZ2%4Z_T9#D+CA7;?.5E7?X[/B2XXMVC+KR)N$;S7T MJ-Q&COZ3*.'!C-.8!B3U[^G9@^^E(P"$ KNZ^%PYE_DC9 (FZ6;'ZFV_,6? M;!#?^_F-3PUBVT-3-3R-&L.!/M &9&@,7&IHAN'9ZG\UYTWYT"@N7SPA=[0S MB"GYUB%#V)A3$CR0:;(R.YA:L1FZ!5NQRU7L"I0[)*B-C=W9>F\_WZ*+FT^? MKKY<7&'4O[[HYOW=?_]PV[_LGW_I7]U6P]6F%W1Q?[UBK6IAU^? MKJZ_WJ*;7]@Z/W^Y^NWJ^K;__Z[86F\^78FZN,?,CBWNY/>2K_WPUNR=(\N!8DQH4 .(\;MR)@WH?YQ-XNLP;C6#<7%TIRW<#D(^Q:024)/ MRP]G92Z9'_)=X ^=+;^#<;$5,+%QK6&?OJ8[YI%/5NVJ/:PS MSHQG'5*]1[>N,4'VS5&,:7H$]PW2M!5"-H7XSN7U*7C 7 V7<5; M9" ?VJ;\AY)XB\UX*:HL&,_;&BAB[I>F:/HVB>K/KO(HMDK;!44=TH9(W*F) M.ZVLAME"^FJ):C< M_#6.$I8<$PW]%W4$%SME>#9@V^W6/%NPIVOV9Y/SG#O,SP*%?J6!$5I MU9C$WRBCJ+;W>]A6%NM8JUS_(+L][$NLVEA3&NSU(*'S7#RVIUL2/(*"1U&Q MW>3)(#OME"*JZ/Q"$TIB=\2EIT?O:1!-Q@=PZ,36>40@/ZNR .F WAN'QH8C M8VN"0L?4L676K+V5T'G]+ AL&X?295A4Z?DK#6E, BX\B3?V0S])8UZK>R3V MIZ9@2Y6GMPD*'=7&/5.>O"LH=!P#.T[-R)B$SFM#Q[*Q7CFO2UJ?U3;Y?!S! M)/XFK&<%RQWTPY2$=SXK/R=)0M.C22+$O5Z#NIK4I)_TL6-'EZU3!06.RMJI M2P>.J-!1L6T=B!&JF8(*T;S)9+1]+L&Q9+78>HW4?)FG)#!$+14;EI#];"5$ MZX;(;6SV)$@/":2:A2U-R#KG0TXF[(=N-*9H&$?C4AF(PA<9T >"C=AQ:M:P MB,%?=F@Z' 1$U1Y67MCS5T)4*(B"#J#5C55*B H)416K3DVGF6 J0(OZ7]WP MDZY\K@A@%-(7U1.V"-MT;)@RCU-0X*C8-F6&@*# <;"NRL,B!06.:K0_^UE( M.5F8R@,ZC&):R$N4DN\O:UIS$(J;9F&];L,4J8H+"5$%VU;-"*F$J(@0=4QL M5HZ"2(@*#%$PEW5-2)?64:1Q]V<:0!D\/Q+#V<:Z+O.#!06.@1U3%@\+"ARU MAVV]:N#B55=2)0M5.]R%N6L#8Z0N[:: MMAAC8;6K1\SO8G@YQ;9.\3ALQ/E9UR]I;?HB^,@Q]CO&3D,&BJ 8_H$DOOL2 MU]*A:#/KEB:FSJ)T#R /3:*8V"AFM+\9KT0QD5%,[5;NB"A13*)8-10S:Q;D M"A0[$UM]O/2#+*7>2WIB' I=K%N:F'0!"F3[CQ*4*"8VBADU$SLEBDD4VU*Z MV^WOER513&P4,QH\U'5#!,AL*@(DQVC1&(<+,5GM8*=&ZA1U=EA.("QVE;A<\"9T] M0,HW#,#NNM4&I;FUP@E+*!X.7!8Z)"QZJ?XB^ALP?:,6P) M'5&A [13.;J[:^?<3RD9!!1^>_[]^W?PHWSUF,1W?MC)'SE5NHJSO(\N#5,: M%UOV_MV C56L89NA=K_7?*13/X7;W6=V7\E/6\V"-$&3F"9L*1XB,4592#+/ MYW^%'DI'68+Y]TDV^).Z*?/)$._/+$G9P:Q==%[<'!>#/?A!@ :\CU&0>7#A MP4]'?@@#4= G.O]&0Q]FMM%4[W'4YE!Q*#B6'6C-4\24O!=*$G66]H0K& MK[.F-Y,H\5D[]M.8!OQXT+,'WTM'($B85%A\JGSS_!$R2")F>VU\Y E)MV:& MBS]'LR#9A-S1SB"FY%N'#&&%IR1X(--DY47PEL55[7)".X:![_W\QJ<&L>VA MJ1J>1HWA0!]H S(T!BXU-,/P;/6_NOIFUYBZ>SW.7JM)W'Z^11"+FZN;V\^]B_/OU[!,K["KT]7 MUU]OT;/X1=TGIM[^3W4K'[X:W9.T-<)XLR&-)+?A2*FW%] M?,Z">"$;[$Y )@D]+3^<>7XR"C__'WYY8)C]*RN MI=N,:11>L^+%!3_I.UIX95M6[/ZM4:]NEKAO(Z MD[6WF] SGLEG3=_>HUO7V+8Y$KVN<>L\RT+8/O^'DAA=A6 ",:JXI"X=#VB, M=!4O6;HOW94%I\*VEF:/HV ?UG5WD46Z550:)M PY"^OHO2#)"PR!Z M2)9.$PKO$'%!>06U](E&R=4JI5^ 4'NJY=YFACN- !E=40^:K-_Y2Z9C-KFF ME_27$<@C+Y%,9"1[24>81J+P3R6LBQ)']SZ+!@RF.Q?@HHCIUQ?&/4'1X)(.:1P#='=U>$6+0I@GJH(5N_=CBT79 MH4)&Q[:N-0*8G;)_<:E^$E.W8/TL5DS&$Y M'BIT5&Q;-8_[E;K"EIO\F=E_">,#PRA&+M@*?HJ""+A /2;0/HEC8EMIL"Q MJ@-/YJ%BW6SP^)2CT 9NT\C]UAD05M?+BGIIF'#-X$B4 ,/$IM*@F)%*P),, M #A K_DN$8>M!/ #X8_I)'@-&_(\:V&!H[7_2"ZQZ?UB!.8^35BF86[O,"C$AR?3W!1D+&[K9"&!VR?*%I?E9)-B-DJ/Q[[(0 ML*T9,@0L)&0LPVI]#%A8>N2OA[=T^^,[(\FQ5O%NE)5B932?E\TKV%':R;]_BAD_67^B2JM>5,"8EJSF>K7]O7YQ MJ>X6,F:[OBN"8Z*J:UCK54WEK+0#+5(;#@.DBH*5NN>QORY(#_D(J-76/GYX M3Y-== 8H]N"56OOL,#OLM5O[M/$""E!!_1=5!1#>&\V/ ??#:JZA8W%;GO0T;!D5@B+2"2TR-%55PW:ONE-! M.J!WY8 >^B$)7>F /FX']! M$T,'PZ#]9G8 W.2T;QPH](0U7&(\":(II3D?F'.'24#"4J6<'HD.X6!5E1G4 M@@+'PI9=E7=+):)B")M,>=0J;WD+M\/,X6_V,?$]GEAY--TO3S0, TM/MG" MJ6?IB:HI"._.7DRN/BE\VS]6#6#(__\ R^N])\-+D MOH- 5M/"JB/+R@X(HB>&@2VS>A]@P3A0BQ2>BTWB='X;,S&*%1?"" MR#L2]XMJ:=CI5>U;)9TP>P*/IMC8K%Q^*IX3IGTL@<+W&YG!EFPZ7]6I#GOO M11D[W9"SZA=(,&'V;ONCX7>Y)8(2J=K#BE.S*F,7^]*P]B:I05+#2S4* :B! MB[J?4M:H&'Y[_OW[=_"CG/*8Q* CEC-3NLI*>R87! >-B[U^_V[ QBK6OLU0 MNP<2'^G43^%V]QFP*3RU,P9#;_Q:?*G9T_0@: +%FZ M^9$G8+(&F(L_V2"^]_,;GQK$MH>F:G@:-88#?: -R- 8N-30#,.SU?_JQIOR MH5%P_'B2TYTVA,X_V+4 M=5;8B[T63V\_WZ*+FT^?KKY<7&'4O[X K+N^1+>_?[CM7_;/O_2O;BL17M/K MN;ZY[OQZ?OX9?;FZN+F^Z'_LGW_MWUP+NH;UO./D]Y)-_/#6[)TA3N%1!B-Z MP"_H=Y<"2P9-&B4CQCS(.&)=X7_3@$Q/_9#O G_H;/D=YN21G.'ORR\7I-MSNH[.J;>PK8H7%X3=Y9=6A&9^ MS3"[EF%NO*QTU8W7GAI65;NVU:LU[-/7]%Z])^5DFYJLO1UVK?4,:,839H0W M8/]7=+P51:ZXR#3[#9?BG/&LO?:\9OB8]E]7:7Y>"/"29JY#@7YT]:'_]?)\ M26M^S@-3OY"H5V$0H;?OZRBF%'V"^T8)N@I!T60RX9*Z=#P J:.K>)M2+;F1 M[_]#2;S%!CZ#DE6JS]J]7YJBZ:^+6H>T5=H66W54&R)QIR;NM#(J\;PMM9 @ M$8T?]=-_Q<"X*(NOZT<5S%.ZW6)9U$!]6=3@(.("$F';@K F[JDU3U>0""L1 M=N^+M4SL:#4K#27"2H3=^V)-$ZMUCPQN16I@CFFZF*C6YVHW2LGW\AR[MB;90F". M?<\+Z'[W^)).8NKZO%T!3Q BXP@F]3_.*6D M&=@8>LUZ*@F;UV;<#BL%E\ 1$S@6-K0&@;-O,[2)/3Y?$:)^F)+PSF?I:21) M:!,GW33#HWN5CU)\D?Y6CPTTKEPW 1L=._I>B](D;"H9/NI>NV]*X&P/'!7; M5H-<[1BLTEO68;,S(*R'EAN-F2,WEZ4O<>JV3E/K8:-N6^TTL5FY/[($SI[T3AWKO:H>=VE^5MKC+Q0&^1MDYQWQP^+PD]46<=%" MMZ:%4QC1B 8--$YI8I=.5*PI%1H62@5[3W#I.?LZ&E="I0JUV)HEX2(:7%2L M: VZ"H[!&NW/Q..&M/[#U-1.-*PY%0XHE1KTGN#B6!7DHX3*GJ!B8\NJ?KRC MA,OKZRV6W0QRCG@*O GVH(LWTM4!L[;KYN55BK&FYN&;!2<:_R::L"M-O<;PFD)(4C( 7= M %*0?9@E*4A24$T;6Y6K.B4M2%HX0%K0-:Q5SKH4@!8:[4@NN^2NN=:V7JYR MLK)+[J%VR46?.$>1S7*K[:)LEBN;YA3JU&G;N&>JDCT MD>A3K\A4P8YMKE/3RAD4]^<'^.TZ#TF.<5AC'+"*O_D\C+H++5F#J'EU^;D0 MKR%:#G;'^,$$J=L:7.U:U-?O+'"OK,!6Q3-5;757*[KIF%=HO:HT.[ =RPMYY(Y5KO>06U:Y+.!8PUVE#1B/#&V0Z;"$GDD\@GD4\BGT0^B7S'BGQ'7Q]J M=RVK7GVHU=645ZD/M33C5:H8'3G9=DUVNV)661^ZN\J7ZRCL_'I^_AD5![E/ M:(QN1R2FE4Q\6=DH2T1EB:@L\Q-_JV2)J,0=62):.W^\0N#V8 IM=K1F(6WC M/&_^19Z#@^AI)A&V+0C+RQ8DPDJ$;0G"YE4C$F$EPK8$8?.B'1$1=J?'NUAB MHMJK',3=NF,2ZAS$O<-#$AK(FV\/;.HLV3H'<4O@["E!M\Y!W#L$ MSDY/#A54?)Z/(YC#W[G(C(;(#U,2WODLP$Z2A*;)_D\2;80/X%[E(Z!>= [? MJU@6APD;'3MZU0(S"9L]>93;(U?9M?C9Q>.L7"H/\ M#;;G'?%#-(RC,1I&,=P1(C>+8QJZ4P22U27)")'0 _E:GM2=H!$-O/V;IPT= M<:LIZO9'W+Y(B:MW]'#C&G8C<.DY%0[JEE#9&[78FB7A(AI<5*QH576='<+F M&,S1^H=UMTX[JWQ8MU2;]P.8>D<.2^CLBPE7/ZQ;PN9(*.<8 IY%W4%*OB/8 M-NJ"(1D-$>&%]]RN/(Z(YXF.>\J^E&09M*D"%\72)5R$@XO:PSU' D9 P!C8 MTGN- .:04_++.CV9EW\,27B:@W5#YN5+A&T-PNK8J)P6)A%6(FQCCA?%PCW= MEA@K,;8E&.M8V')J^@KWDIA?SF(VZZ;.X7JM#L=RBBV?X@$;B+QI2X(R5CB2 M1KQV)$LI"F>EW#Q?)UPV(WF[E^11NY==1P7D&.*,<0PQA0\D\=WCB!OH%G9T M62HE+'"4GJR5$A8XEK'7_"<)G"K 4=6JQKEXD02AI>2E'X"&6"]ENW6Y'+H- MU*[(1!LQ@6/5;^HB@?/ZE&/8$CB" @YB MPVBPSB_Q8F8DRIHK!V/$#[DH7;/]I=H2P41&,*-FJRV)8!+!MDESZ#KMMWHE M@HF,8 +8'P<=S9JE_BX4Q; 0;[B]CGF83F*EJU7U2TC__=Y (X.28H)&[:I5 M;1H)FGU1C=/^F)?0(G1'/AF9.MNNU%FE:\M,;XFN[4%72QYQ(=&U+>BJ=7LU MO>02726Z-H"N=1.!&JFB,645C9RB4%,\9$-QK4_56Y\I*<,2XC)YI6O6;)_0 M(LU#(EBCD?L&XUX2P0X>P=2NW?Z3""2"B8Q@1M73B&3D_A4C]QNTS$,-=54^ M%%5&(?<&FJK^$0F:?;%LI<$#Y"1HGH[=-UA,?,@NFFP;Y?#7NG6 MK3^4\26)KDU$[V4C3(FN;4%7K>M([BK1M3WHJ@N)KJ)5PA]@W%E.<6?1^Y]2 M G?!;\^_?_\.?I2O&9/XS@\[.6Z?*EW%X4_FE#9@3Q9$M_I@@?"ZVC6!CB=1 MXK,SV$]C&I#4OZ=G#[Z7CDY510$:7GRN?-/\$3( T@2[;N,CU>:X]',0>5/X M-4K'P?O_!5!+ P04 " "M@DA866?-\/D. "+:0 $0 '-POT+#W=VF,['!-N\F[*24=IFF20;2O7?WRQUA MBZ ;8[NR'6#_^CU'LGF$1S"E@;3-3!N,9.GHI_/6(V?_' ]=\L!$R'WO_+6A M%UX3YMF^P[V[\]<7W6:[_?J?C5=G@PBJ054O/,\-HBBHY_.CT4@?6;HO[O)& MK5;+C[%.3E6JN]R[7Z@Y[@E7UC4+!2N/Q3T:LK0Z'Z^K;%AY[D%U]L>[SF5: M'T8):U0U2QC.L"0KQH>@&'D M__A\V;4';$BU!5CJ+H4ISC%/^]+--O7J+.*1RQIA$-H:#+((XZR>Y=679WG5=,]W M)HTSAS^0,)JX[#SG\#!PZ:3N^1X# OBXCA694!^YXS!/?H3RJWC(!+=5_^.H MP_KG.5N#T7MTB"TQ7K\8,L^!?]$'E][EB +K/ < U_M\S!RM3UWD-^Z8:'RXNNZVS_$(/&3IL>3"^21-Z%-1M>PX;?V*3:?M6KE$ \ LULURK?6LG M%XXC6!@FORZ!*XQI1\5<2( M @3"?IX+^3!P M45?([P8"A[(@X?HX=$#^97^S3I(^0S\6\DGJZGJ"AQP*XI%^S^3$I$_

<^ M9X)(FMA*Q=AL?UJ4KL-!M8PZZW'9E$QG M3=6T)'U..\DOC#L%:8I*?D[=Y4$I*LV(Z'"[5RC;S#(*U7*Y6'.J5:M<*9=[ MMM6SBHP:QI^(WNR=1)L.N:<-&+\;1/5B12^90?1VQ)UH4 P-E4GU4'2]W,O6L#NDQL>'F+U])RVW=]4?^M('_>]@$T MT-=#[D[JKV_Y$#CWBHU(QQ]2[_5I"+801$3POJH8\O^QNE&$ N/YK\NKCZV2//Z M\^=VM]N^OEH[A"$5=\ 1/3^*_&&]#-T=RZ!^I^$ G,O(]T[)>[VI$[-0*M:V M'(B!?)U\%?F!>CZ6D7VX[GPFV]N!][X=H\.B7"NEXT&TJ]JG98V^]2S/88./ M 770D]=.>'&COHE%&%,O M(I$/_IN-#CXQ+.(+8I1.G#?$[TO5&@T823P'#IVGS@.YL".H0HR:57P*L2.# MI[ %/(H,A]F^D*%//09'6V"M7 :/*Y6T&VF;6\IB+\8(#GRC#:$)Z71I#IUH M$T:%-N=^@8"SGHBIF)#J*4%/8$ZC1;IZ1] MU=0?L]@_?C/*A;<_+*.=M,84%!K"@OPU XK0D'0#9J-_[Q#N$1Z%I#D -YV) M]>RV\]@CVG-9VDK/%S#5&F#@TB!D]?3#VS2#H3(UFGSI[>(4E*"#!R8B;E,W MZ43VIXIG+KI>4&YZ!/% Y*0])\4Z%.67O[<,O6B9*XL*NI'Q^W(AVQMKB3)U MT[*.C2A$:C-1>8F\0A\F&!GJ/&?E'G%2W0S&Q%C%-$NS[ <'L9C9M5'; YT6 M)&I-YD::?NQ%8M+TG>V3(T6P$LRE(RK86K,8.4_!6T!PDVGZN6;A W<95.Z! M^DD0+6&2P]"L8J5@_H)T!TAOZ;B=Y(1LR=R+^)9SC:*A82[=,"L; 7Y"-R3V M0<:C041"W^4.2>$X2GS7&%\I_&AW%U3"F_TQVP^#5-,?#GF(:V8$!9NU MQPRH5O5A>7935XS%TLYBM MI75$&56]5MC#[K3C^%42*Y--!\PAY#=<&Q8;ZMLO]QVFB$7^.2"6W7C M>MMBSGYO/L&TVB]6R;QT6=NXFG( 6<19*T-[M'+69W]UES_R?9"BJKX0C"Z()9FKE$VEH3R M308M?.D#8]P,?.]1E&Y8$$9:):U67+;+V9.U1Y.'G65>7X?DEKDLP*$G<>7)Q9NUJ\H$&VQPP^Y[@^B<-P+$)!,4@X[E9T (3()R$?QFY$/>;'H3LA(?! V)_( M-Y,7_!Y,K(I*?=6DF"T_2&8AU)ND97V(/OT1OH?.%L=40$A.0L;(1^8Q 5:N M[<&[L5K0O=!-79'[IKZ$_PN)(!'.;)SHQR%#1+"6R^FC#!.Z3.#$JI/FA0TRKH$/%%9[5S\)Q M77"+;0#&N_L,RA1[WI;=2C\%N\WP(<,$H&5>,XH4/,LY=EO8E#-EMB+H-%GS M)^:W&\%0N^$&8;GE#CM^*[\4_ =X*39^,HJ.9)[TWVW&A MJON+#U-XVV$8,[$#-U9^<>-*;K285CRQM^/&I&Z6_,;"?AYK%I(\D=\XTL!F MSCM1D083$*L$J_:#2A%/(@\ 9,L\O8'CI MQDDY?2Q5O:!!1@,.W\S4S"H7("4V;;$H->,C3(0_4I_-?:U7R&^XA_L"ZAHJ M]>,Q@-D/]1EF3\K0U%.HYAKH=G<6>Z/61?N M2W@SG\@M;'LB]] >[OP\_16'$>]/#C0K;<_!^(&1WH38,K,/E-Z#?6+@VXK' M:7<>$B 1@@\(URD(U4I9Y4NK M8P.01.9"L J2Z/DR=(U#)FO!4),U.+S#A,MP5IV1QPF0?;D3['S$H6MD* _& M!B6"/? 0W@/YIIZ-"5AJVW@P 2OC/28.%4ZH5M^<=7&S=4*GV69)_8T/+J"(/#5E-<%&'V"NV! Q9'RZ\\=5U! MUOL4BM/[% 9B9H?OF-83C-YKM \*O$[=$9V$&.UGNW0AP]T*ZVS_%")JWX.( MQIZC);/=ES]OGRNZ;$=L2$R]8.J*"Y;_7\69!R9[T[Z/#@MC-Y*[TZY!*25I M35 MY,-4ZS1]T()8D,6$+TWE0I1[V+E=+=?7'GE\O/F4C!AX8&$,VI6"HL5] M?"#'C()J=WAHNR"IN&\B1F4]!=)?!'*FONT42*GX\:T^_ =*_VLLCW'*ZGCH MFBB#\9[9#'<;**=++RS=%G(J;0#WIK=H MH)$*%'/ (C2,*X]Q>T@)W@NRZG/>Z"9Z,: MHQ"JJO9/)88+Y/'I41X@$NSX]*(>W!WC2X.;&G))H=P_+)/]*07$28[/$SFX M]3V^#ZJ[I!2.3ZCZ\AI[IX6[*F$JO)/(8[F'FC\$3/W'> M''9B5I&U:6)2_+<[>Y](U?,N0]5,O6ADW^9F9#[.M:ZI:EFWGCC/]9U.UAQ" MQ:06\LK7LR^J$/QMZ97*RQCDCL;]9N9,C124,.Z<(NW\&T M" 1V:WO'J.,E)M@J1Y)@.XZ#2+E& MM_WQZN+V2V>[*T@7 Y,LO'A<(<[\18=J_>!KS$42TFV7%3E=M?#@Q.Z$V#3& MQ0*9T$ENJ5,9F1 &#@6^NC&LQP;4[6-* 1N2YB>I,&""Q9@1DO8@M%JJ9 U"BV6]_,0)J:WW+^JFN9^6@*BJ M47W&<':SX_S=%1;>X=#])@0DRW6 M>01=V5M@.+OXXM_<9@3C6_E7"V1&NSG@K#^W\*CNQA"[7?^PJ_]QU._-;<6P MOL%/.)X0*J_^*([\2SJ-_P-02P,$% @ K8)(6%+>2R-L @ >0< !$ M !S<'-C+3(P,C0P,C X+GAS9,U5R6[;,!"]^RM8G4MK\R()L0,T08 "[@(W M07,K*&ID$Y%(E:1CY^]+TB8<96L,]%!?/)IY;_:1SLYW;8/N02HF^"R(AU& M@%-1,;Z:!3?75S@+SN>#P=D'C&\_+1?H4M!-"URC"PE$0X6V3*^17@/Z*>0= MNR?H>T-T+62+\=S1+D3W(-EJK5$2)2,/\U99T"290IED.!Y3BD<9'>,\KV*< MI F=9&4ZC;/LXZH8I^,*LGR*\]'8P*;I&&=9.<$QJ:-Q/)F0>CIR3G>J4'0- M+4&F-*Z*G9H%:ZV[(@RWV^UPFPZ%7(5)%,7A[9?%#P<-#MB&\;L>>E?*QN/3 MT)I+HL##5:=H#VX5HFU!4A@:(;051TF4!8AH+5FYT7!E6G,)-=DT>A9L^.\- M:5C-H#)];\!VM@=X9-9$KD!_)2VHCE!X7]SY "';$=9V0FK$7V0?6A+G>1[N M;(T!VG=P(2C1;C%>;8G#8ROB.,%I/-RI*@C?%;;OB'&E":=P2FSSA#WO7^1P MG.]I.7C>Z3DX9PKH<"7NPPJ8G5SZ&ULU5Q=;]LX%GWOK]!F7W:!82U2%"D5;0?=3#LH-M,& M38H9[&)A\$N)4%D*9*5)_OV2LIU(L62+DJVJ+XEL7UV>>\)S+R\IY_6O]XO$ M^:[R99RE;T[@2_?$4:G(9)Q>O3GY>OD!!">_OGWQXO7? /CK7U_.G-\R<;M0 M:>&L"+*\@4 ;\O;3K.;ASR^NBX5UC ,PUGYZ:/I,FXRU&[A[*\_SB[$M5HP$*?+ M@J7"#+",7RW+-\\RP8J2];VXG%8+\PILS(!Y"T $//CR?BE/WKYPG!4=>9:H M+RIRS.^O7SZV#AG.C,4L55?F;WNN\CB3%P7+BS/&5:+1E]Z*AQOUYF09+VX2 MM7GO.E=1L]LDSVM>#GGPX& M]U)G"'5\P)5A!D->3:CWJ1QK[CX.-1CZ\1$?:EID!4M&F!9/PU0@)^:-,WVU M'L8XVI%,RW'6J;L"5=T7*I5JE2UKKIU8OCG15W.IXOF%$K=Y7#R\OQ?7++U2 MG]A"S0GA/J,A A%R(X"%BW7IB@(0"A&X(?<8(VQ>/,[IN4K!UXO-\.48NP:MLB:2I8NE:9ZA;,4CWN\H:M;] HS4)@!?SM!J.S >D8 ME*]G3_'T(#$Y.C7)I%C)1 U)8I8!6?X\]$SL#?U)5DN-NHQ[J<3+J^S[3-^J MXT>>N0#FHE13J\/9UI_M7;Y!R7*QA^.UQ4QD>H5S4X :W5&>+;J%4V3=_N(K MVO2@)TZ62Y7K56M# (WS#B)^&1>)%JXK*9=ZL<1N')B2>!JS +H@AR M-PILA;MQ/C71EJ"<+'(@^@?_I[.!:Z_:1_:Z*[8/)T=6JRT=O>3Z/.Y!4GUT M-KI,GX?1)-$M&WMY_JG]Z")\FBT6MVF\ZHJ6\\ C?D@$ 13J-0'&/@9240=Q5HXTC3$VH:Y!.'65WG3;3N%^L@\DYLF(M>;$2[,[8>ZFVV>-H MTMT94%6_NPWM16RV,Y+SZRQ5GVX77.5SKK@' X4 (EJZF$@%0I=P77(I(HH2 MPDAG_3YW/C7IEOB<$J"S0MA=MEO$[5?L$#J.+%8+)JR$VA9R+XUN.1M-GFUA M5)79:F,ORLNT1[4BUO(01!" 2)( M9(2\@#'5N0'M,-[4!+J"[-0P_^*4J#7-SAJY8Z!W5V\7WO=K^L!L'EGIAR#2 M*@U8T-,K.73Q/UK*L BVFDAL;NN;7MY)J>?1LO3[.3_/L^^Q#F&W:_X8SMHXB:,' M83W2Q6XV!N2)%LFCU?:BWDVX^-R>:OR2W.LE7^. M(M.+,\6IKR 0040!YD( II2G6W,F&8>$<(:ZIH5]@TTM-6B\0%0 .RO$S@JR M4V+NGAWV4KT_0QR2P"-GB4'<626*KJ3T2A9[G8^6,+J&64T:G>^Q3QR;I[D> M'V#X3:>D.7,9Y3(*@1NY'.B%! ,A1N8E$B1RH0^IZIHM&D>86HIX?*AMA=+1 M,!V#LWM::"9R?RX83,^1$X U,U:BWQE]+Z4W>QQ-WCL#JFIZMZ&]D$^S[RI_ MQY=%SD318=[5["LO& M<:96'-:=T@:KLP+KK-':]I7-U'9M*P<3-DY7:KW8U>^WD,0Q]$ =0Y0!!LCI 44*''!?+#T//\GHWDS]1"'J1W M'-0U_B3]XM$;Q2.UB%-H#NW:PL,TA!=9$HNXT,GD#[T@S6.6S(60PA-N "1G M&&#(?< Q80 QST4^@DB)SMW@MONI2?T)H;.!:/&DY#9[^X4]C),C"]J&#KLG M)5NC[O>LY+:[\9Z6; VE]KQDNU6/=L_L(N>*E6>:"GFZ&DL$0BH(P'HA#EC@ MZBN?$PG]2"@/=A5HU?'4I'E:'EAH<);GPC6R.K3&/2DX=F?<+7J[OK@AU'YM M<=71>%UQ _Q:4]ST^< #U_-L6;#D/_%-.9L@\2.&( :Z!@;F>P0MM6&F)L3G9XKS=;]ST@N]:WSP,-AY*%(=[U2 8P8!YQ$'L ,$^[)D$EB M?31B'$]-XH_[_@:<_3%(R57WTP];!L8Z]-@9?*^3CFJD@PXX2D>CGVM4X3<= M9]0^[UMI3[6CG"4?=3][_V_U,.?(#5P%*:"A;XHL]4 8Z"M*(L4"2!"2U*[( M/AMA:N);%XTU2J>$Z6BL8II]V9Z5%'6Z(?4$*?>QRY>K8$ MM%TXVPSMA?Q.)P-I$L*'A%W-$94$*P^#$')=*H7R 8\4!SZ! ?*$T+=W/CBJ M>9Z:'>.W$F5CK+W$6/;+Y)%5(8RQ+HG520$. BHV2)2 #+ENO*8 !:?P-O MB[BNA;(?'>/4R"Y,]*B.VR$/*(P59R/7Q.TPMLMA@\W S2.S(?4YO\SNTCFA M-/*-&#&76IL>EX SL[P-&&51I$1H^P6@K3$F*M''O9!R1S/+'8.UYYY1A5#+ M#:-^-(V\6]2)H?Y;1=L<#-\GJOC\,9M$VT&U[A UF/85^"6[_RAU"8^C]5?I MUY6$8>&B(.* 02P!QH$ 7-# /$\;*:5$!+W03N8M(TU4[!JM4X?;LSJW$=Q5 M]@>@;1SQVS/6(P'L86- &FCS/'(RV!/@=DK8=\/ RK_^=1:G"L[U3' 5X11( M99)")#'@'+H@5)[ND@.7NI[7J_971YEH0GBL;>L+QX!U/J=]3XUJQ%JN ?K2 M-?(JH#-3_5<"34P,7PO4O/Z8U4!38*WK@4;CPPD?S@FT,?H.5G#D>6<7,XVPINL6L3;Y5Q+?=O M;U]LWHE7_T/_[8O_ U!+ P04 " "M@DA8ZS*TY-@& #^,@ %0 '-P M:;\[1C.L.';FA([= M03.L=G5?6GXI=T>;3I [#/#OKQ+H'5C@-D=:(B.D?G&74U5//;&KRN'=#S?K M:O85\J9LZO?[[(#NSZ .32SKY?O]7RX^DF+_AZ.]O7=_(^2W?WX^F_W8A*LU MU.WL)(-K(R\_%N S-TK][T7]_OK]KV\G ^O[Z^/KCQN3IH\G+. M*17SK?3^O?C-$_EKT4LS:^V\__4/T4WYG"!>ELU_^^GL2UC!VI&RWK2N#IV" M37FXZ0?/FN#:'O6_M&OVHD3WC6S%2#=$&">"'=QLXO[1WFQV!T=N*O@,:=:] M__+Y])'*S>4F-.LUY '^&'>R949<--"'>'.NZV2J@F/A*H. MV^:/F97S4/6CBPCEHK_JL=^TV85V 8EQ:KD@$:0C,FI/;$ 21DX3U0E4X/2Q MUYW5&S2[#\4&PL&R^3K'"V-(N.@^=)"('HXGZNZ@>9W=VWOO F47SA]CVMY+ MS"]=Q@N1L"JKN)V=1:S:9@?(W84%S=V?H=<)5%YWK/6MQ285> M_L9EF6'1-W^[-:P &L-MP4C241-9-"1>",D,90S)Z56 M*8Q;O9[3.H@*8KI4&(WD))APBGE:OFQR#_P7Q!].FJNZS;=DO=+00/G$EL>SFG$B'KEA#)?JCK14F:0O%#ACRG.Y!]#!3 MI\=H5*?$C?LWK.B!+4!X03%9)CZB)U+;2(K$<0^T3&B-K/=N%XO',ZH',:/X M3ICQ:DPG2@R.*Y]W"(PFF 9%A(6C$P(W2N\#<"Z#86Q##A9N5(&-^8!.<9.@8#YK/]R6UW MZ)\_);1CH9)VJM"2..\TD0I7-R^[1T%LXH4!88P8MRZ\K'L8*2;$ZZ-BOQX"P1HJ#6&.,3C"LN_\J"8429<,]RIQ"_ M]88"X0HWQ5O&_4795K# $;A_\BN^YYQB^W:]]4"PB, ?X1*@0BX I-K Q8%3F6@@_,%&)<3_*1 MNF&!GW C\O7@3>2F_W 35JY>0O^01U'@NA0X$"J[HSB!U+5&X_(%7&ON3**% MVLF-_U#KL">G)MQL' WE))J,']:0ETCE?^7FNEWAYG;IZMN%-E@B.Q&Q0.X> M +,&B+4F$ >:*P5%B&871Q3/*A]&C,DW&\<#^\;\.,8,)W99SL?*+1?,N4"! MB>Y8!3"QX:P[@Q-$!98\B]HX/8X1C]0-X\"$6XZO!V\2J\()6IY==8J)[8BFD8PH4TUJ9Y+CGJI]5.XP%$^X^C@=S9VQX-W\" MXAD.'.W=_]"]=/\N<;3W7U!+ 0(4 Q0 ( *V"2%B:WWJ17C, !&= P , M " 0 !E&UL4$L! M A0#% @ K8)(6.LRM.38!@ _C( !4 ( !"% '-P I XML 18 spsc-20240208_htm.xml IDEA: XBRL DOCUMENT 0001092699 2024-02-08 2024-02-08 false 0001092699 333 South Seventh Street Suite 1000 Minneapolis MN NASDAQ 8-K 2024-02-08 SPS COMMERCE, INC. DE 001-34702 41-2015127 333 South Seventh Street Suite 1000 Minneapolis MN 55402 612 435-9400 false false false false Common stock, par value $0.001 per share SPSC NASDAQ false