0001092699-24-000045.txt : 20240425 0001092699-24-000045.hdr.sgml : 20240425 20240425161029 ACCESSION NUMBER: 0001092699-24-000045 CONFORMED SUBMISSION TYPE: 8-K PUBLIC DOCUMENT COUNT: 15 CONFORMED PERIOD OF REPORT: 20240425 ITEM INFORMATION: Results of Operations and Financial Condition ITEM INFORMATION: Financial Statements and Exhibits FILED AS OF DATE: 20240425 DATE AS OF CHANGE: 20240425 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: 24876376 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-20240425.htm 8-K spsc-20240425
FALSE0001092699333 South Seventh StreetSuite 1000MinneapolisMinnesotaNasdaq Global Market00010926992024-04-252024-04-25


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
April 25, 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 April 25, 2024, we issued a press release disclosing our results of operations and financial condition for our first quarter ended March 31, 2024. 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.
Date: April 25, 2024By:/s/ KIMBERLY NELSON
Kimberly Nelson
Executive Vice President and Chief Financial Officer






EX-99 2 er_q124.htm EX-99 Document
datasheetsimage.jpg
Exhibit 99
Contact:
Investor Relations
The Blueshirt Group
Irmina Blaszczyk & Lisa Laukkanen
SPSC@blueshirtgroup.com
415-217-4962

SPS Commerce Reports First Quarter 2024 Financial Results
Company delivers 93rd consecutive quarter of topline growth
Revenue and recurring revenue growth of 19% year-over-year

MINNEAPOLIS, April 25, 2024 (GLOBE NEWSWIRE) -- SPS Commerce, Inc. (NASDAQ: SPSC), a leader in retail supply chain cloud services, today announced financial results for the first quarter ended March 31, 2024.
Financial Highlights
First Quarter 2024 Financial Highlights
Revenue was $149.6 million in the first quarter of 2024, compared to $125.9 million in the first quarter of 2023, reflecting 19% growth.
Recurring revenue grew 19% from the first quarter of 2023.
Net income was $18.0 million or $0.48 per diluted share, compared to net income of $15.3 million or $0.41 per diluted share in the first quarter of 2023.
Non-GAAP income per diluted share was $0.86, compared to non-GAAP income per diluted share of $0.67 in the first quarter of 2023.
Adjusted EBITDA for the first quarter of 2024 increased 20% to $44.4 million compared to the first quarter of 2023.
Share repurchases in the first quarter of 2024 totaled $20 million.

SPS’ vast network and go-to-market strategy are unique differentiators of our business model, evidenced by our strong channel partnerships and longstanding customer relationships,” said Chad Collins, CEO of SPS Commerce. “Ongoing investments in supply chain management, coupled with SPS’ competitive position underscore our conviction in the growth opportunity ahead of us.”

“SPS Commerce delivered a strong start to the year and the 93rd consecutive quarter of revenue growth,” said Kim Nelson, CFO of SPS Commerce. “As we capitalize on ongoing opportunities across our addressable markets, we continue to invest in our solutions and customer experience to strengthen our competitive position across the largest network of trading partners in the retail supply chain.”

Guidance
Second Quarter 2024 Guidance
Revenue is expected to be in the range of $150.9 million to $151.7 million.
Net income per diluted share is expected to be in the range of $0.45 to $0.46, with fully diluted weighted average shares outstanding of 37.9 million shares.
Non-GAAP income per diluted share is expected to be in the range of $0.75 to $0.76.
Adjusted EBITDA is expected to be in the range of $43.4 million to $44.1 million.
Non-cash, share-based compensation expense is expected to be $11.7 million, depreciation expense is expected to be $4.7 million, and amortization expense is expected to be $4.6 million.




Fiscal Year 2024 Guidance
Revenue is expected to be in the range of $619.9 million to $621.9 million, representing 15% to 16% growth over 2023.
Net income per diluted share is expected to be in the range of $1.99 to $2.02, with fully diluted weighted average shares outstanding of 37.9 million shares.
Non-GAAP income per diluted share is expected to be in the range of $3.28 to $3.32.
Adjusted EBITDA is expected to be in the range of $185.1 to $186.7 million, representing 17% to 18% growth over 2023.
Non-cash, share-based compensation expense is expected to be $56.1 million, depreciation expense is expected to be $19.5 million, and amortization expense is expected to be $18.1 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 Q1 2024 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, grocery, distribution, supply, and logistics have chosen SPS as their retail network. SPS has achieved 93 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 condensed 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 condensed 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, and other adjustments as necessary for a fair presentation. 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. 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 second 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, 2023, 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.
CONDENSED CONSOLIDATED BALANCE SHEETS
(in thousands, except shares)

March 31,
2024
December 31,
2023
ASSETS(unaudited)
Current assets
Cash and cash equivalents$234,637 $219,081 
Short-term investments56,174 56,359 
Accounts receivable55,724 50,160 
Allowance for credit losses(3,589)(3,320)
Accounts receivable, net52,135 46,840 
Deferred costs63,647 62,403 
Other assets13,695 16,758 
Total current assets420,288 401,441 
Property and equipment, net34,971 36,043 
Operating lease right-of-use assets7,285 7,862 
Goodwill248,813 249,176 
Intangible assets, net99,289 107,344 
Other assets
Deferred costs, non-current20,601 20,347 
Deferred income tax assets7,483 505 
Other assets, non-current1,117 1,126 
Total assets$839,847 $823,844 
LIABILITIES AND STOCKHOLDERS’ EQUITY
Current liabilities
Accounts payable$12,303 $7,420 
Accrued compensation32,990 41,588 
Accrued expenses10,744 8,014 
Deferred revenue73,701 69,187 
Operating lease liabilities4,478 4,460 
Total current liabilities134,216 130,669 
Other liabilities
Deferred revenue, non-current6,473 6,930 
Operating lease liabilities, non-current8,425 9,569 
Deferred income tax liabilities7,536 8,972 
Other liabilities, non-current232 229 
Total liabilities156,882 156,369 
Commitments and contingencies
Stockholders' equity
Common stock39 39 
Treasury stock(148,892)(128,892)
Additional paid-in capital557,998 537,061 
Retained earnings277,048 259,045 
Accumulated other comprehensive gain (loss)(3,228)222 
Total stockholders’ equity682,965 667,475 
Total liabilities and stockholders’ equity$839,847 $823,844 







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

Three Months Ended
March 31,
20242023
Revenues$149,576 $125,868 
Cost of revenues51,487 42,964 
Gross profit98,089 82,904 
Operating expenses
Sales and marketing36,432 29,083 
Research and development16,009 12,563 
General and administrative25,907 20,677 
Amortization of intangible assets4,338 3,851 
Total operating expenses82,686 66,174 
Income from operations15,403 16,730 
Other income, net3,132 1,276 
Income before income taxes18,535 18,006 
Income tax expense532 2,717 
Net income$18,003 $15,289 
Net income per share
Basic$0.49 $0.42 
Diluted$0.48 $0.41 
Weighted average common shares used to compute net income per share
Basic37,049 36,427 
Diluted37,686 37,155 
























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

Three Months Ended
March 31,
20242023
Cash flows from operating activities
Net income$18,003 $15,289 
Reconciliation of net income to net cash provided by operating activities
Deferred income taxes(7,070)(5,147)
Depreciation and amortization of property and equipment4,694 4,626 
Amortization of intangible assets4,338 3,851 
Provision for credit losses1,408 1,206 
Stock-based compensation20,018 11,780 
Other, net(431)502 
Changes in assets and liabilities
Accounts receivable(6,759)(6,220)
Deferred costs(1,651)(1,679)
Other assets and liabilities3,030 602 
Accounts payable5,098 (4,849)
Accrued compensation(9,518)(4,417)
Accrued expenses(674)721 
Deferred revenue4,129 5,818 
Operating leases(551)(452)
Net cash provided by operating activities34,064 21,631 
Cash flows from investing activities
Purchases of property and equipment(3,533)(5,261)
Purchases of investments(44,412)(34,329)
Maturities of investments45,000 35,000 
Net cash used in investing activities(2,945)(4,590)
Cash flows from financing activities
Repurchases of common stock(16,540)— 
Net proceeds from exercise of options to purchase common stock1,260 2,184 
Net proceeds from employee stock purchase plan activity391 241 
Net cash provided by (used in) financing activities(14,889)2,425 
Effect of foreign currency exchange rate changes(674)(55)
Net increase in cash and cash equivalents15,556 19,411 
Cash and cash equivalents at beginning of period219,081 162,893 
Cash and cash equivalents at end of period$234,637 $182,304 





SPS COMMERCE, INC.
NON-GAAP RECONCILIATION
(Unaudited; in thousands, except Margin, Adjusted EBITDA Margin, and per share amounts)

Adjusted EBITDA
Three Months Ended
March 31,
20242023
Net income$18,003 $15,289 
Income tax expense532 2,717 
Depreciation and amortization of property and equipment4,694 4,626 
Amortization of intangible assets4,338 3,851 
Stock-based compensation expense20,018 11,780 
Realized gain from foreign currency on cash and investments held(304)(137)
Investment income(2,879)(1,127)
Adjusted EBITDA$44,402 $36,999 

Adjusted EBITDA Margin
Three Months Ended
March 31,
20242023
Revenue$149,576$125,868
Net income18,00315,289
Margin12 %12 %
Adjusted EBITDA44,40236,999
Adjusted EBITDA Margin30 %29 %

Non-GAAP Income per Share
Three Months Ended
March 31,
20242023
Net income$18,003 $15,289 
Stock-based compensation expense20,018 11,780 
Amortization of intangible assets4,338 3,851 
Realized gain from foreign currency on cash and investments held(304)(137)
Income tax effects of adjustments(9,554)(5,909)
Non-GAAP income$32,501 $24,874 
Shares used to compute net income and non-GAAP income per share
Basic37,049 36,427 
Diluted37,686 37,155 
Net income per share, basic$0.49 $0.42 
Non-GAAP adjustments to net income per share, basic0.39 0.26 
Non-GAAP income per share, basic$0.88 $0.68 
Net income per share, diluted$0.48 $0.41 
Non-GAAP adjustments to net income per share, diluted0.38 0.26 
Non-GAAP income per share, diluted$0.86 $0.67 


EX-101.SCH 3 spsc-20240425.xsd XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT 0000001 - Document - Cover link:presentationLink link:calculationLink link:definitionLink EX-101.LAB 4 spsc-20240425_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-20240425_pre.xml XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT GRAPHIC 6 datasheetsimage.jpg begin 644 datasheetsimage.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 8 R1.htm IDEA: XBRL DOCUMENT v3.24.1.u1
Cover
Apr. 25, 2024
Cover [Abstract]  
Document Type 8-K
Document Period End Date Apr. 25, 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 ( $Z!F5@'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 " !.@9E8G0?$X>X K @ $0 &1O8U!R;W!S+V-O&ULS9+/ M2L0P$(=?17)O)\VN"J';B^))07!!\1:2V=U@\X=DI-VW-ZV[740?P&-F?OGF M&YA61ZE#PN<4(B:RF*]&U_LL==RP U&4 %D?T*E'MZ?)G7K:S/ MI+S&\BM;2<>(&W:>_+JZN]\^L$YPL:[XNA+76\%EPZ6X?9]621A'^_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 $Z!F5A[A^"J6P0 "01 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"$KUWRM3'UX:.,*RYA,1$P@Z;4\ MN%*9OJ;\=4JT#BHX$8:;/7EE:VXS"(S/-*T%PW7">4C&+[/9Y'4\N2+3Y_$- M M0OC$ M$T:>\W19OR1Q#=?UKMO!K>LC/'5"P]W^0)G!'NULZNB0:#KH8NB*@X>[NJ?903+<[Z1 K.W!I&@ MW;GN!?BDJBJ"A[OV%\6-80(&)DUS<30W74N%"ZUHHAF&5)4 #_?O$/(><7*61IRH!'N[8<\6N(Q@>!DOLL/5A(H9-VLMJ=29_N%XC6>7^ M'N[67Y%-M &"KE<$<__?OD#V':4PWS;UVYJ<24[ M/Z'JPC$@>KLB&55D2Y.*QG;ZA?MT*6LG M7X, [-[&&,G):0#WYX\1(Y/W:$/%FIW=3C8(/8_"Q]$O&%-E]OY%9C])F5K; M4?H)%* 60X8R*NISBPLVSK?*Z/V&[3RL@KA8"4\)7=>BX *-*)75^Q<=!,8 MH\#SI[ BW\DG5C\^N!1L(#RWYW=[O3JRULF9U_Y_,*,V+9HD; 5J[LTMB*O# MD?S0,#(KCL%+:>!07=QN& 7#L"_ ]RLIS4?#GJS+/T:&?P-02P,$% @ M3H&96)^@&_"Q @ X@P T !X;"]S='EL97,N>&ULW5=M:]LP$/XK0C]@ M;F)JXI$8MD!AL(U"\V%?E5AV!'KQ9+ES^NNGLVPG:75EW8>QS:')W3VZNT=W M)YFN6W>2_.'(N2.]DKK=T*-SS?LD:0]'KEC[SC1<>Z0R5C'G55LG;6,Y*UMP M4C)9WMQDB6)"TV*M.W6G7$L.IM-N0V]H4JPKH\^6E :#7\H4)X],;NB62;&W M8EC+E)"G8%Z"X6"DL<1Y*GQ#%V!IGP*\"!JP'.,HH8T%8Q(RA._]N/P9,&FM M5X64,\$E#89BW3#GN-5W7AD6#\87$!GEW:GQ#&O+3HOE+3T[##\^R=[8DMLY MS8).IF(M>05TK*B/\.M,DP#HG%%>* 6KC68#A\EC%'S8 Y?R 5KXK;J*W5B M'_2^FO-CT1=X=-8T\O1!BEHK'O;^RPF+-9O\R-%8\>2SP:0)P M:?EA6;/CO9NFJ:]PSLM_D/.?K7/--;=,7I+VH_\W5_DMC)/Q]%PZC+N.HL?X;[:)'-M[#/)73)>UYN1]76^T$D7O!9QP<&%Y_J?]K-#]! SCMHHB*]1GA?H$KQBR'3Y8GKA/[I_X M3O,\3;,,J^AV&V6PQ>J69? 7CX9Q P\L#V1Z6ZWQ;N,3\OH<8#U];4*PG>*3 MB.T4KS4@\;J!1Y['NXWE 0^L"]CL0/YX'IBIN$^:0ERHY_U=3 M_ 102P,$% @ 3H&96)>*NQS $P( L !?3T\$MP> M:4#M.*2VBZD8_1!2:5K5N %(MB6/:(7->=I3W;+T]!;X"O.DQQ0FE(2S,.\,W2?S+W\PPU1>5*(Y5; M&GC3Y?YVX$G1H2)8%II%R=.B':5_'B4?'D78FYJD6:>IK&HP=MX1PT$G53$WHI" M/J:Q8;!EK '$NW2:9;/46PQFN1BUMIS> A(H!"DHV1%[A$O\G7D(GP&LK\,S4-AB.G8RF2&]B]#V, MYU#BG/]3(U45%K"FHO409.B1P74&0ZRQB28)UD-N5G0&[O+H YMRR"9JZJ8I MGJ,.>%,.]D9/)508H'Q3F:B\]E-L.>F.7F=Z_S!YU!Y:YU;*O8=7LN48 MY0]02P,$% @ 3H&96"0>FZ*M ^ $ !H !X;"]?+7_OR4Z?:!1W;J"V\R1&:P;*9,OL[P"D6[2*+L[C,$]J%ZSB M688&O-*]:A"2*+I!V#-DGNZ9HIP\_D-T==UI?#C]LCCP#S"\7>BI160I2A4: MY$S":+8VP5+BRTR6HJ@R&8HJEG!:(.+)(&UI5GVP3TZTYWD7-_=%KLWC":[? M#'!X=/X!4$L#!!0 ( $Z!F5AED'F2&0$ ,\# 3 6T-O;G1E;G1? M5'EP97-=+GAM;*V334[#,!"%KQ)E6R4N+%B@IAM@"UUP 6-/&JO^DV=:TMLS M3MI*H!(5A4VL>-Z\SYZ7K-Z/$;#HG?78E!U1?!0"50=.8ATB>*ZT(3E)_)JV M(DJUDUL0]\OE@U#!$WBJ*'N4Z]4SM')OJ7CI>1M-\$V9P&)9/(W"S&I*&:,U M2A+7Q<'K'Y3J1*BY<]!@9R(N6%"*JX1<^1UPZGL[0$I&0[&1B5ZE8Y7HK4 Z M6L!ZVN+*&4/;&@4ZJ+WCEAIC JFQ R!GZ]%T,4TFGC",S[O9_,%F"LC*30H1 M.;$$?\>=(\G=560C2&2FKW@ALO7L^T%.6X.^DX K @ $0 @ &O 9&]C4')O M<',O8V]R92YX;6Q02P$"% ,4 " !.@9E8F5R<(Q & "<)P $P M @ ', 0 >&PO=&AE;64O=&AE;64Q+GAM;%!+ 0(4 Q0 ( $Z! MF5A[A^"J6P0 "01 8 " @0T( !X;"]W;W)K# >&PO&PO7W)E;',O=V]R:V)O;VLN>&UL+G)E;'-02P$"% ,4 M" !.@9E899!YDAD! #/ P $P @ &H$@ 6T-O;G1E;G1? @5'EP97-=+GAM;%!+!08 "0 ) #X" #R$P ! 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.1.u1 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 [ix-0514-Hidden-Fact-Eligible-For-Transform] WARN: 5 fact(s) appearing in ix:hidden were eligible for transformation: dei:EntityAddressAddressLine1, dei:EntityAddressAddressLine2, dei:EntityAddressCityOrTown, dei:EntityAddressStateOrProvince, dei:SecurityExchangeName - spsc-20240425.htm 4 spsc-20240425.htm spsc-20240425.xsd spsc-20240425_lab.xml spsc-20240425_pre.xml http://xbrl.sec.gov/dei/2023 true false JSON 16 MetaLinks.json IDEA: XBRL DOCUMENT { "version": "2.2", "instance": { "spsc-20240425.htm": { "nsprefix": "spsc", "nsuri": "http://www.spscommerce.com/20240425", "dts": { "inline": { "local": [ "spsc-20240425.htm" ] }, "schema": { "local": [ "spsc-20240425.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-20240425_lab.xml" ] }, "presentationLink": { "local": [ "spsc-20240425_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-20240425.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-20240425.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-000045-xbrl.zip IDEA: XBRL DOCUMENT begin 644 0001092699-24-000045-xbrl.zip M4$L#!!0 ( $Z!F5AW1?6RE"L /_: @ + 97)?<3$R-"YH=&WM/=ER MVT:V[_P )<=5BBQG5&-+'LNIU'V: H&FB!$(, H6?GZ>[H; MX"8N +B@ ?9,E2(+6_?9]WXW3$?!^W=#['CO_^?=_W8ZTH?(G8QPF$INC)T4 M>](D\<,'Z4\/)X]2IY/==16-7V+_89A*JJSJTI]1_.@_.>QZZJ=>/O)?W[SS_2?*]7]_XNNWV/-?P=,NV=+5GV;@WP(K;-XR^J?5T M_!_E#3P*M[-GDO0EP+^^&?EA9XC)]\\U//M>.CQ79/G'-XOW.?$#W-J/ MTC0:GI"<(/WUC>>D3C+$.$W\D?. N_\=/[R1DMA==X6]-?NR MI8Z_7RQ^P8"U/.$X]5TGZ#B!_Q">I_A[FEW.EJF:\OC[=%>O]D8?8,]2",.= M@PCPD5UVHR"*S]_*]'\7Y$IGX(S\X.7\'U?P5#_V_X$2)TPZ"8[] ;LA\?_& MYXH*BZ/_?,[6#\\'?HAS2"JJ >"[_C[T^WXJ]7KO?B%WKX(^VW,:C0&D"KSU M8$M6EI:L+R^98OP*[G#<]*>WAGVQ;=$+I%#CPBFL;\(GG*11+'W%@9/Z49BL M77[-*_TVQ-)OP00G0S].I=_C:#+F=:DW,4@'!U;K)'^[?[\\2C^]U>P+Z9.? M.-(G9_+XZ(0XY'7Q]U_NKWYZ:^H7_1S8#P3673<:\;ID73$ZJF)U])ZI[H7[ M0$?$[U^_J9BZT%>JBRU?=T%/X7C_<*-O.O=3N-W=+'HMG2$?%.MHA&,7@T@8 M1W&:2!_].$FE?T^<&);(M.U'H._0]9T ;DHF05I(:AQ]CZ^HA>X1]C=VPA?) MPX$/FC*1>EKL22Z(/NQ.4OB3]%>VU6@@@88A;Y" !Y[3867BXF3K7_$3#B=8 MWBBE?J 9BE'SV^Z>[WZZEV^L_[_^\^7K],QB0TCP7 M(.DF=+O2V>WE_8?+?U,%3ZY?_8PD1PK G@0Z\4. 8>KX@91,QN/@17*'#OS- M#:*))\'"GWP7)PAHR7-> /9A- E=,&L'4R:*&1-) U#$*>BY >&X'*RUD0P% MH'2@96S\:,Z ./0 3I^=V!TRM&D*0UNW(,T1-IRS%0])?ZML628"/.Q&,36N MSB>PH9C<]>;]3(3^$^X/R#/KI>A1.6FU5;Y1"Q38PMCQ/) VG0 /,I>) L<' MB(3I>4?5$T(! =X%&BX%3T@@>5(UNK\B#&@*Y,PBPFQ(E0$0^4P!=2>!P!QR^ MUJKXF4)W$$>C]AJR^]07K]C(X,)G.Z TRCL_'YY^27'R6O(4U3+ M7=M2$(!?_W;S[LDJ,QQ,PO@$YR48;!' ##@7@Z =U M*GE7<5"Q"(KUIJ"CN0BGON,^DEA5Z'4RD WH_RX."4 YQYU\=-S)+&!#OJY8 M%]*3 W@!+?8<$'P _B?@-9)Z/\%IHGG#P8X!HKW MG32*$X+,:!)+?9)OP4DBC2(/!TC"3SZP!?%8^R_T!GA7!!8.T$48XD "[DQ# M'"=#?YS0#P=P-4GA-V('N2 )0 ['0$M9A)G,\X2GRR,HFZ9PEX:YCNTXU"<-W3.3LZ#Y&,260,H)@"/$E2 MB:QWDG3S396*EAR78#(P+@3ZLD@80,G)<0OHB]-@[&EAVKS->?1!8S,N.O3JX)](PEUQG36-7?P))@B&?]@./I$[)%'@"MP^ #D'V:"887PR%9!>"0 FP//26,22(X=*@YS89E+E!6! MPUR,E(NY%LQER]NS$UN#9D=0M&6C:;]/?,\!9-5O(JR.GMW#JH&\\O#98=EJ M]1*(G;;JN[7!1%J+M.J>5BTVX!;[O:8U;8DR^@F5<6[*/*O^-)01.^%#'@.1 MYT*)-+AH*%UKDX$O$'>,*->*,-1V;,I=W:!(A%],Q SBP20 K9._BJV)F(%@ M3X$%S=Y-%&LZ->?A39HU1Q7L%D$*G 7'"M&#E=.#9>XS5"GP5S8^5@!;NC87 M$LMB9,I4$@OL'9G[7"<9(L9KG3Z-75*?($RH94JQ"1[@"L3^H,QI4 2N]SC& MKK_U*7W^(>*H."-P@/R_"SQH;J>2#>GES14>\Q6PKSWT=36Q^7=FCSA]ZH:M M?Z3<"N=_#N,9+SP LF+L/':< 5CAYT[P[+PD2Q_:K:YWXX+*)?1KL\L_^HGK M!-+_D:A/78[*R@_7!A'AJ/#MJ)A*;\E1,55E]A=2Z !B-B&1;C!AZZAH4@R: MV5+,'SD"/+C@>4#[B=7T[#?M*6C\T#X=$'F/TKO:E57ATS6:%/;ATVE=U:;T MH'4U52"0=Z=.L0UPXFA@S3;G+?P%?:583'?8/PIQ73^/5O?\#'/FL1?W_,"T M,:JY?HH]%R%83RB5G3\.ROM)4]@@BI^=V.L$4?1(V&6$G61"5%R>L69IHA=R MS4F2R6C,TGU^^!0%3Z 0_8?0'_BN \M^#*/GD#XX"=GOL9\\)ME?7!RGCA^2 MG&.&"3>=S)7OCYP7Z_=$X!@B1O#QY(^P)+L,;,S#"77B4 M4)L%C!$ +RD"BT+Z 3P8T-8CCV5L&19S\+_0Y?OAD-:NT"H6WP4$O!#H 60] MGY8T,W,(OD. /'TS%;Z(OC%R2:TN3?&2%\[V PN'=9.WY21$22W_S?*[(*%FIQ_*ZRPSIV!DJR\NV?O=6L="(7@ ML5UF^M%+B50E@0/3IU(CDXP$",#8\,,)$JKGG"?'#RAO U:V+'0P.,!"AVDZ MINC^Z:UNL1]^UE:==)-QXN8E/',MM,<$)%. %'K73[1@CHBU+TP%L9(\$.'A MY-@E1FQQM=#6-UIY,PY =*^AI8A5^@#U)2#F!6FM7E_U&E_%;+2NN^P3FV5> M8M=8UVDL=V[[3-4]1W'@906O"6U698U)M.(LJTTC%;)AF#6!O2I2: XI:Z)-L3L, 8(/+VA:HM>)^@DH=3QMLD$C@=PNV* M*B- '#."0Y^5P[,-(N*5@VT*2_/\)(W]/JTG1!E\4%82_0#7?#>1A@[9U3 " MX4OIQZ&X\N,EO'3IQ:%#JAN'/GZ";?:T576ER>O"4F8?PZ< X]E=F!C,TF< M+';&4> #-CY&M%R2)N"(T1L"WD8.6SHIER0F,%U@*MFFV5%U VPD $\]N2# M4)2>GY^79= ^W?+N6OEY_N[SY M)'VY^_/Z*RVF)V6FR7*Y;M8VSAKM">IS%$PMRB] 8<0#A#N^ =MA\AKICK@R M\+!#2N@9+T3P1$S?33\$=$%<#_91XGKDJFON,\2 )4\]^V!ECN,H96$!PJ7T M92XP-= I)@7KI*NZP3CK?-QC7*.@YNHU6G/]D=#8XS3G1DV\^;!\TKI[:P2'/B!]+-(4SN*L=G6T,GG M8J$3HO@ O"Q*0,3#AM -U8A]'!#Q3M0,U4/)QD>FRY\D>#!9D-I4-P- YKM? M?HN9!;, MM%$G"\O,/DKNG#8#D0IX+\FZ>(BMP+XV MNYL@(JN$IU*/Q<1(3]'4-#A !0H'-'FW '2"F:0 (@%^66?:!\EP0. V E>DBS("7Y,&%*[;1*/P; PEJ1C*"*8D(8A;PF MOY5\Q,.@-T8^?07^GML7Y,U@I)#OS^T.*)ZD)8@-,Q?V7J+D;7NG/6B,@%.B M7J?TF%E#K$OM&>@<[$NZ9*!+_.0$$T9[&461'<_ ]GK39 >KV3A? 8V59\M: M_=9I?)(Q"NT?H6$_&@&$Y2[$\9?#\R@3!,3BI)%AN!NSI.MD3'M&J"YF86OX MCC>+6O>CZ%$B6Z;BV@%#-\V8%Y8PBQ_#X@G>""BG^Q@ ;@"[I.%O82OXNQL M.S^Q6UAC#6EMF;@I>2[_,EL):?;+I!C]-LA.&6$&-XRQBBE:]S74"=Q(X MF>%*&"7VI@Q),Q TM[)E393DO<4D3Y8R2S)-2#4XE;>LXYD1."%_^M(TRJ/[ ML9<9T>6L#B848N+[]O\+2IBUH&7)BP!=[SH)HL_:3 MB@G:).I)#S0:%8/G#L1+9^Z0Q".POY1E^UY(U(=D\>#X<:Z<,\-HKL0K"\LM,^6%I"W_LG5551[U]&NGTW52=KNH7%D_1"UTY@_Y(+O"!QI"S]V. M_4G7:F(439T30!+\?1PQ)XKH$E:MD>0)XOE7+XSU0O,<1M,CRZ6QX6349X,: M\B)9XDF-1IEJFE9C$@@O%-!Z$SKR#3O@+3%??4'NSU?6'$AB''X_Y08LS3&X M63N#T[#A7Q.P_?T! Q6U008#L,994)!4)LVY&\MV2N9&4(H;XJPDBGGHE"YG M;\NI,!F#50/^1A8L( BD_D_^BJGM/D>NK%8L'\KCDH!*^HQQ9HUO6R)9R+RD MFK^6&?-D"+&7A5@6;J-KSY>^L#N]35H=W/_7J.-#,ZTHB MEUTWFB:B&3T2W5VJ+)R/CL\*">?#R@Y-=<]"@/]().J5+F6\X,^#"8TCL3I4 MYJ:'4V4E?'.#F("-$SPK MLEXQD)GFPYDQ/XNX4RJ,%NN$YUS'@>.R=!,-JE*>I,6RC%JG MV9*%0@X6?)J5$\]&MK&RA)34$1"&BUDE!/&R1^/ 9U$<&J*>+;TK764I'B;I MB=4'2ZZ%CG)@3,&3O(I!>=GQ/-BKGYR%F MKE-""]H)3)@[\+Q8NI,KSR?VV'PMR 8CO@%9FQ)&I_&&SU1/49>)1NX.=WR( MO-4JEE]51-W<7I6,T<^Y_/EIM!=,X4Q$0@W%%C+[ M&2?X//_E L0@J:\^]T.Z#_I0E;/J@/FZ,F/ %-::>OF7L\M=>NF7U'M]S9*[ MAF:MO2QWE;77-KU64;N6;5=Z[>9KFJT?9+&]8@OZA<*7P1C0F(R=\-G!,A(8;80+YCV; M EMK#Q1R$W8.$-H"(+;0Q6O7SW4QF)D7#=G_Y?W]O")8C\^U&\UD(-7<1!Z3 M<@")K)@_$*SVQLXFH0,.$GA$/TN[ *($<^P S(6WER;.+"ZQ 3,D2,T'7JYH M3B7-TC"5,+.TW4J8.?0[]B1@)/I?F5MDYDDQFATC949/3K 02EY4T(6V+4M< M$_ /.^WMU?&8T6V*C^Y3*@LXXIS.EAV1;J8_.]J1; M.9?+]\,H3CND GZ^7&&MLE7+[7\EXW!$9(:)%$LO26,;\'PH65;4!FD?>C2C M5Q]Z3L,TNV1M&+3( H-9U@]P)?XOJCAY(C #66I9_N?/EFDM>F0$F&F)"=#C MEO^#('J>UEZX)*^:TA)'?#)VP)F&#+OWLS !>,2,ILJU8&:?VE^UN>7^U]H? MD3+;74R N2@F.6=C(9"Y'!CFF 5DI R5*1H1C4=5 8.#3(AVH1>W42V7M'$ M. 9Z3R,*\0$/1T./BG19$]&'PT+Y+JOKVYCC M:YE?JP#C]RK:% VU&1J%'A-9AMV.L ._CL>WB Q@<8LE^0NHEF)U*+S3GJ[* M2+7+$E\I$#3(7&@)3F4%Z7K95.91<'J ZC9^),R7F RURB;FDY*3,9L+MV-T MHTFDI^FH9]681!>6QF;TF$C6R[H8_%D:?++_W72B'6O*HO#H1(/.),%[L#>: M1&<6V!1E_0T1:#@>=FQ3;7R<@4\A\'L4>>20@U-1^*IN(UNI4:4(C;\%/SVD M6*90^0>![LWKX4U5C?T&ZI%>#]1\C>5R0LUO#BO*%M+T&JM-6ZWH"^41CM3% M=;!WG&(V&-&97%F<^%1$N2HC4ZX8,12B_!CHT>K,W)]&:G@J!^:F]9U6HMA" MNBU\.5ZQ8\@UYO!/PQ28M^I.TA!0D**($C&.L:.6C>5P:@;P7BBR6O&7*-$M M6T# #P!*]W<7W#6G3&5K/627MJ[+3J/A>?: H-H&4JVJ =56["7EK,AG>\B? MIQ%6GVXN?[OY=//MYOI>NKS](-U_N[OZUS_O/GVX_GJ?G?\L7?_[CYMO_[?+ M#*$Y%&F !R^:D"S#^M%,-8P7*KO$5L>#\^E1@>_T_8#.%Q9AX4;[@M-.Q;'S MLFI(P'M,L1[L':?I.>Y>TME$/P7,1U'4S2]V M>EI;1HYS*P5M(UT5\SEXQ4X/&:5M/TX]2GY%PJIFKSWYE4VB-0L9 M6HW3(81QL$5.]ZRRDWJ$<5!R)/LKI^\D30)5JW$DE# (-N-&;8DYP'N 6026 MYX.0AHELNZ+Z$8%E;G&JB<#R\;M#HM'(9V>=LE.IX0E8- Y=$61N:,//?1JY MC\,H )9(_D''/:SL%NQIL_>ZP[6^^Z3,5*%,+G@!1/Q5'1 MQ,1!@9I3C5I^B[&33.*7'5B^@6&P,X5,&>ZIQ8_E%"'*X^%&K0\WIZ'E+V&Q MI.'-":2QXWL=/Y1<9^RG3K4IXPU4+(9AH5Y/U,!RBQ_-0K)9X_S0T]#^7W'J MP!\]"3MQ",L^F2RE:@%]Z34V60HC8#-^C![@1TRG/+0AX+J3T21P4A !$V+#2?<*$4X:N-H!WCX"IV0(4_"#X8??1OASP U5_OZ1D M6";\U_.?WK^#'_F21T[\X(?YRN2N;%,N8-OKDR>SG?+YX$7V1PH[==5XXD*O M'N:8I\0PCA(:VC^/,;CUX,-?//M>.CQ79!D(8?ZY?"VS1YP^H&^2KG^DW/;G M?Y*7^-ZO;WS==GN>:WBZ95NZVK-LW!M@Q>T;1M_4>CK^CVJ_R1\:QOF'Q\X# M[O1C[#QVG $ YMP)GIV79&EUL+0,&)H)H-CG+O:%RIU9GL:2YCG^]4AILM_[ M+_?2U=WGS]=?KZZ1='-[U2U'FG6O_^KN]L/U[?WU!]C%[?W=IYL/E]^NR61L M^,_GZ]MO]]+=1[*MN\_7O&[LM2@F&SO[(W0FGI]B[Z>W1N]"\D,I'483>*67 M( E_=S&(RC$&RA\Z,9:<$9T8_/-^-EE!1JUZ%97',S%"%0# +7#&"3[/?[G( MBZC\D$*!/G2Q^ TBL);D/_T>NYPQL*5W#5,A/)SY0=F',_;N4O9>4F;LFBEW M;7/]9;FKK+VVZ;6*U354J])K-U\S;/TPB^T5?6T;*O&VQC5ZKVY=8Y7R MK:*0.L?#&&/I,]PW3*3KT,,>X>+/3NP.)4U!!2I$ZP7WG!]3U%;D$Q&JK.I% MZG&W[O(D0*4=G#"YJ/+EH<"\@.G!DOUT9$F[CJ JN/>6G.53<+>*WD.&U>8) M7H)F6T>SJH%LLV)%3ATTVP+EQ4/#6T'RN(J25(H&^=RMQH]J+;AM0T%ZZ9' MHB3E2-C122T =[/T6R"8-A73FIQ*J-_C*$FD<1P-_)TF ?)=4U$0&#T;R3:7 M7>&B2J8:1DG=D\SEZ:"ME8(-,L]F\Q"WGJ=3[AS0'4)HAYQ.L)<5MH!$FZBH M[YT@JS ;.?$C)E3;]+:7@CO73*27GLHEFEZ.A!VU!S83=W.56R"D-K7F\"JD MON($TQ0?D5,>?L)!-!ZU8'I@T6B@B619S.7@%3LJ,DSN#D)N@:1JHCGU.P[! M]@^HH'*\D1_Z21K3TL,3L:I4 SSC&H]M$U;51NS(R+2XPTX+9%43K:K+402+ M^)N>]DVR27Z8.N\H9G23!Z:FDE72D:6+X":?(T9!MU#CYI+4":U-'ML&I MP&*=D5'QZ.H)I2-,N\T53B>'4=-$BB423/6;<%P*PAMVJ,X@CD:Y.(S"GM*FVBU.,P/M,+JK+4VU MY3;-)[M32Z7-X4%!LJTC60.II3O'A'']6GGEM^30U2GC[-L\*O"..:PL3X_< MQ^OY62*WI-!R.V8V+Z^U!]^VEN"X.C:I(.7]YB2^NXO[U!9[8]76^+0JY*Y> ML1N=HYB$(#'.28R[L%<+%,2F,G->%<0'GXS1]G:IWFT+_Z[:&K?\V_R2>$%B MG).8*.RO&K\PZHI?-/ =W"*UE9&(/^D_L"A[)":92)_/M\52JR@\>^F0L\2KQ*O&J4W_5?L[U MY'/#\P=L\[JY M\D>7GO(!I3VS:VKT/-"R!Y1:65%X M E7=Z>.2*]QKY%GO\CI@KWHWG"BE:6IG&T=1=$%D7!/9#KUH^R"RO18E\"N# MOV(W"ET_\*=SF>=*9-*(_LLE^GL<1T\^V,%2_V7O"IP7-7UX9=SCE P^X &. M8\#NOL8'-2CM>&8AV9)_;K F:RMB#*3H5BV(V:OTYY?IQS%V,\E/CQ!9&M$/ M,A\D??I"+^*_)G[U8Y":5R:E([-7<22RJ&$[ G+4&L<>GH1-( [L$ =V<(^< MF@_L. D[X0MQ_1(B!091++G@)OBI%$3)CF=A-(C*%*3+946 L 6.AARU]$10 M80N4/+W"F:TKQV)/0]D="BR'7..GE)'3]U1#CS6T.47OI>O"%@"K,7:Q_T0J+T]%HIO(,GI"IO.(&%4MD8'C5*)S MR_+3[*X;)2<3MCU3D&F4L."$NW9$Q%@EQ#"GGAJWW,[.J2MINK5+H6A(+GV. MH]#V1T*.V18/CEL),#7QQ\Y+9?N^>8K%0')/!&DY1!X_?,+)/KK[,Q@<:#S/'HO!#CV>IXGG57R9Q.Z0&)LGWPA\IB%# MTT1XF3_$&$@UZZG1/HFS(19$ -,*A.U/QOW42?JB'E='>*";);*.-+7YR61N M.?^SDTYB:OCM@_6;IUET \&+1^N"'3NCN(50F M)EDWV$_^BL?SGG)^ C$9F7$JKK)B(D,7,S3YP\Q/;VU542_:49C%K00@MNRNP71MM:4 MJ9UEH;>?RSG&IU+>=*;HR+;+#Z#A(_@FBM66+29=+7M8O:A5VQ'HUX,!=E/B M5 VB&"Z$DCN)8QRZ+^!QN71PF10[*?A7;(B9B/=7Z97C0^"(:/^K=@C.,-GF M4']V.&%,&FY(-I$:.Z3\D?Y":B"?GDHA6T*5B(,.H.(";#TDC3)LEC/:0 MKH@Z_#J2BZLDC.2D4A\_^&%('"I2C@T?B+P3B0NI0(VR+6)#G*)',55D]VH\ M#;;-1LA&D8#A[VN%04$QS79UK@'LO6A"CG:BHGH'+<8-[(H?BKM/D/#)I*JF M(U.S=M+H.\&E9@M.<(/@ACF59:M(DW?K'*Z%&ZBJ^R4E(QWAOY[_]/X=_,B7 M/')BL!'SE6F8GO_?K&UVVWY[F& MIUNVI:L]R\:] 5;#9 M>4F65@=+FP?%/G>Q#>/9'RD)JALH8&=NLY>8S7K%;&2[]U_NI:N[SY^OOUY= M(^GF]JI;BNKJ7O[MW6WG]\O++]+7ZZN[VZN;3S>7WV[N;CG=PVMY1_9P]D?H M3#P_Q=Y/;XW>!8EFI<-H F_T$D3BYACDT6>Z<"1=>O^=)'"K=/W;S;N' M%%+TH8O%;QCC5X*8?H]=SKC94KNJJA*&SIR/[,,9KW5M=[=++EHA0J4%/?$'J8]H@F )7C#B5-00='^Q84E6F8:#8B5%G5BS2N[*4_I?&@ MTEHIC[@,E&ZW<.>2M='HU4C4 ^;K>-E\U= .9\&;8IM5;"3+9;,-34HV"X)M M&<$:2+4K3B^N@V!;H+4NI\SX?Y-SV[7VS?AE;V+"B1V#\. M9E1D*643A@?'30N$TZ9FCP+":>1[7H"/2PH?\#C&KD^/%*)Q8&<4P:+^9G_@ M:#QD'<#1D=D[:N/D=)/-ZFJM"3=JQ<+4P^&F!3)L1P.K#E*X7!)9?I@ZX8-/ M$D;LI-3CVUOU<(2F'?6(Q&K2JG:+JP[<:,@VCEKF>B+2JH$6UST9!]#I.\G2 M@8X[.8>-4]^JC.3CGBTD;*OB<2T%6?91Q[F#X8389 M;[D]-YIKH9L;*"P-<5!#)TL=4#K3Y&,=6RFLKN)84;02)]0*>ZN5]M;-5""M M22.W4X>?JQ3XAPF?TD1__(%5/33>B7W&+J"U80K# -2YNHURM;P,0M*W"J<.MJ MZA1]5"NNB3ZJ^AE"]%$=HH\JZ^9L9?N":*<2[52\($*T4XEVJ@:W4WW%3SB< MB%ZJD@'F8ONWROLSQTSKZSUD6.8NAYB)SJ83)A_50+9I-UF@Y[=D^V(3>?:= M0F_G.[C%:1N5]/J>YZH;S44+KRU)K/?W$*JIM1"CS:=-EL9MS$-N"<(T_CR# MHJ;"3CF%_6<-CKCW'RL)L3W6YPD":C\!<2O3=[*P#W.6]7)JHAY. MJ?;6K8LM#(/F,(2HA]M+M^1$@WMRHD%S1:4HB1,E<0U A"B) M$R5Q#0X+B GC)S.P64P8%P3;*((5$\;YR$8QCC#Y9(F#C)3;:=I/+<'"*B/E M=AKZ(T:.'W:DW,&1TP)QM6DB$Z?BZC#S>G>:!%1+5KW"O-Z=I@$=Q.)L)VZJ MS.L].&Y:(*UV-*[$ $QNQYJ) 9@\8D4,P!2CYG@$;"OLV/F#O08#[(+ !VO6 MH45F5/Z?AAU[UD.&44+X"QOV2'@Q4$\^U@38D[9?>11.TVJ(DIFMW9N(>(% MU3E_C4P4:"HRY(HGS/"1V=IBH N";1?!JCJRK;*'Z]5(L-PJK_R6'+J&:+D3 M+7?ML6-H!6G.28BF//-? =W"*UC9[9K&UBYFXAJ;_*%MY9F/&RY](A M.OX#<7*WM#W/G^84!,8U@56I(Q%AXEOIZ\SO?!8%Q36 5JXM/T'@00;QM MNJ2ML2+1T,\M:D08[[1-W?5AO(KV[L'&K_,"LJIQD]T@PJGXJ%I>5M,H^AI" MA((13H(1S+(%QMPR J?ZM]3Y"&^*G(:085!3NN24@G&4^&3TUGF, R?UGW!V M.($BT]'[<\_E7YH]XO0!,Z LUSY2;HT+/_N1]P+_&::CX/W_ U!+ P04 M" !.@9E8B_-QNHL/ '; $0 '-PW2]S&JDQ/1&2TI(,S*^?JFZ) MAWD8.<3@)/F0 /VJJJYW5W>21B8@'_N4[4S?>$>8[@%4\(=A3"S#LK-N6:MHE.R![51MIC&C4M5LRW8U.K!MK3)P#,NR M^V6S7C][:+@&=+,<0W,LR]3L,F4:=>JFYEJ6569NR;#-P9G;L$M]&%*D+SP]8H[^$#P6 MH:$( )<*:4>/^U]F/AFE(C;W:<2R[GRRJ;-9*G(?NC.D9]8= MV_F6Z;D?Q=1W%J:/U_>>3UV,!?4CW D:P]XB,H9F6)II+4RB ;I+$V7H;YO' M+&M&32N9Z3Q+X\XCE9(?O2 M M@JNS8\"OQ:8+[V1Z_0O!@RZC8O1BRF!(=J[&O"'R\+K<"/@7>U^VD(*SCJ MVV4A9I.X*&$M-G_[[;>+F,<>:T9AY&C(LH9ME2^*ZL>+HIJZ'[C3YH7+'TD4 M3SUV67!Y%'ITVO #GP$ ?-+ CDRHC]QUF2\_0OL-")#@CEI_$G?9X++@:$!- MGXYP)L8;5R!B+HK9!X\^%(@B_F4!-JPQX!/F:@/J(:]Q][(PT"RKT/QP==UK M7Q275LBQ8-L'_*8M6%%0K^.[;/*)36?SEPI- _;)J%N5>OU;%[ER7<&B*/WG M&KC,G"UD%YJE4HGT@@242H\] CSP;RP8B_>_K#5;MEQH]A(>,V("FGM:J 4? M;\5],/9GRU0*S<_<]QD- X]'>UJG%X,:OA5W(GCD4G 6F 6ENQ%AAQ":<0(V MAZ::0A,%,7TY+#WF) *@:4^<(8@@NX&651@8M#Y9OE9HWM#(I5_)1R_H4X]\ MIN++FFTN+LN/8 ,FP$"Q:(W8HSIH1%*3 *Q$JH=&#,)^68CX*/10KKI1DH/B0K2(_N=R8W)OG$7OP\X$T3"Q-8J MVE;GT[)T/1W^,2#.J%!?471&4HM*,2!W^G#W^!U)O/B;5IB/N:T.&3D/#KNIE*XS/ MQ]R-APT0T/\J+'5%@#3J\0>_(;T,:(U""LS2%[B;ZK-:8&69A;$.4)>)+8-W M&):U.X$7B,;?#/GG? !$ WT]XMZT\>Z>CX!S;]B8=(,1]=^=16!;040$'ZB. M$?\7:Y@V("R_CA41JC /VN.,*(H,?]QT[MOO2>_^ZK[=.WIH>^W6']W.?:?= M(U?/G5ZOTL''+=OU'1$QD:_3G^(@5-^/!;,/M]W/9'<[D,4%RK52.AY$ MNZ9]6M7H.^_R FWP:TA=#$LTCPT RMK"+T(!7GL5^ED[T0^8O=N^N2?=]MUM M]_Z%'/'FL+Y+1)10" _C /PW!P,&8I9(((A9/G%/23"0JA7CQ=1SX+!XYCR0 M*R>&+L2LE^SG*'9DY#%V((\"PV5.(&0HU4C T1;8JY##X\HD[4[:YK:RV,LQ M@@N_:".80CI=FDNGVI11H2VX7X7F52BX1ZSRF8S+7RBEDBV.= OLM1R*U$(> M$RP,1$Q.LN] 'P]X,28RZDB;F7OZQOAP%S'=#Q^J**3+'GB$&8)8>?Z*O2!@ M[-WUI&EO=UOM,]*Y:>E/6>R__V96C/,?EM%.VA,*Z@S)@OPU)Q2A$>F%S$'O MWB7<)SR.2&L(3CH3F]GMQ;C'M.^Q;)9^(&"K-:"!1\.(-;(/YUG^0N5]-#GH M?'D+RK# (Q,Q=ZB7+B+74\US!UTWE),>0S00N]G*:;,.3<75WTNF;I>LM4V& M;N;\O6+D&[$1*$NW2J5C PHIM1VHHJ2\HCYL,#+49:%4>,))#2N<$',=TZSL MQ%[FUT8='W1:F*HUF1EI!8D?BVDK<'=/C=A@)9A'QU2PC68Q=I\CKX'$ M3;?IY]J%#]QCT+D/ZB>E:!E3'*96LJN&]8ND+R#I/9UTTHR0(YE[F;Z50M,V M-L&4";(LD>0FT$]79:TH7:DWXH95 MJ[I=6=^4U^,Q=V3_5RCP?=Z:?D5)3TY7N@FD&L:Q:0KCV>>/9S9>)9\(&1;0^9\ MD=6R- 3')A0E$3 ]%@*D>F X(^;*R*2@,UI9@?/TAF(=2?9FT#B#Z#,8Y#9XMC M*B B)Q%CY"/SF0 KU_%A;**.EFOE2NO MFH[/:\NO@,N\;^/;W6W+GX+'P*F85$K\-#,2K;KV_2#P^A38+@;FG]D?NP!V MIEZU[?-O2!+O&+D=+H^4D@AP6*01"1=*)[H)R)!ME5-9?5(N@542)V:5M#YT MB54R=.BXQK/Z63BN!VZQ X3Q'SZ#,L65=V6W\D_!;G/ZD%%*H%5>,VT*GN4" MNRV5Y,R8S0:=)GO^Q/QV)QAJ-RP/E@5O:)8%!'_H1^_&=Y6?@N^ 3IJS0*AG M]9UINYIUTC_=C0M5WU]\F)&W$T4)$R_@QNHO;ES+C26FV2?.;MR8]LV3WUBJ MYRG-0Y)G\AM'&M@L>"H*GK5V@[5CU,[=(\7]E1EIS,DCD>CZ-L4VM$A**A,6_6F MHW[@G>3*/+\!]++"2;E]+%.]H$'&0PZ_S-7,.A<@ S:;T9::\0E-1#!6GZU] MG5?(7[B/=0$-#97Z\1C _%?Z3*LO96CF*=0*3?0X H0]<+Z(-%385:R/*-X7=91MU[@F/TH%+P'+R&])]I#IDNO MB9+KZ]:+Y?Y;?-=CS*"_PFU=8[?;NJ=KCM\/X@8O;N8_DRCF@^F!=J?CNQAD M,-*?$D>F_P'2+V#$&#C XFENGD<$0(0(!9%Y( ^@&^,AQBHAYNMI1%PV@"7D MM0&5)#3*F3/])$.H[E&5R D>W57/9:(PZPS+ .$>.$ SUQ4P&/U-6O-7.LN M9\TFQ>!G/FYA6GTO6[=XH_>U-ZZ]81,RQ(XQ)Z"J.C+(/TK 6PKN'=,!EOE\ M.N -"^-@BWB=@5"ME56^7L#.^"J*2X4;J2,Z M=U-P73JAL^!Z47 /(8U[X/P9)^82N;VRS#.%#T]>*0@#M>4-P3R*94$;WRU( M*6[,A] ^>&E)O#KDN1<-\CZY4)T]N3 4@P!O4&]-IA"F! M?.\RY'A^ ;60!NPEJ!,WHF0$G#<]W^00S.A&G2\@MXGO:BD+#.2?\]>*2SLQ M&Q%+-RR==%F4>+&L"+L%&4]3B2"IY,-,B%L!*!5L6+6(+_1T5BBT%'8>EF0K M,F0AR6[]O%9SK\O+F\Y*CN?7G5?!.3B9SLB8@0<8):#=*2AZ+#8$/<(HF!:7 M1XX'F@*+.Q(T%C/."Y8Y;VX^G(SSI.'!48?J8,*LU'\-G!6GMR9#W>4SJ]3-,JWB>=#;ZP T,?!A9"P1?"@/N,5?Z M=^@4@#UADC%F3D%M5Z\>V02CDC$X(B1*^O^$&7 1'.MQVN<>>)=J,AJ32,U_ M)MEN"3P^NW,%0((O-7M/"LM3F0P"XF;O#$KD-M=!9%%. ML-*Z#L,S3"2R4%[!5A#WT6.3HH:55"Q&*L+F M"1NJ+M+$&O,%=55GE"G)UU M]KZLP>MZVULL95TW3'W!'O:RO5;J*F7Q: _$/(8 X\0]5:IC]>_#.;';RD4S M^N_V[D#*J*][!%>W=-O,7^)GYK[*MFFJ6D4O/7.7[3O=*CJNTN+,'-T$^OY+ M XX;YSV5F6S-*Z]%O624S8%U$-5P0=<&:DQ1Y/S@ !+UBB,3__AJ@H\VC(%[ M\ %%FO\2V*^M>OVMNI/Q33>+;Z2O^/1-JK5;^3W$[Q"^@FG8WZ9&4U?G>#!J M!0 *N:/@='?P0 QX$&_&O:Q*\Y$Y//BF=O_XDJJ MO*]"/>-OOVSN%SKW;S&7B)=QCR*9>!PWLPK-7N?CS=7]']W=7F1=CE;R,.-Q MQ3V+[SZJLY*O"1=IG+=;]N%LW2&+FT!8[M $#T9DXB1]MD]E/B) '!H"]81: MGT%$/\#0'2>2QB?M,(3X/<',@YR.)O$P$(""L5J[F M#<[LBEYYYM;4SC6-NF7M9R8 JF;6]A'FK;W77?D^7N?W5VAK'G+!WGGXR ^E96]5]I8<8Q_B,)\B=_OT\:/A$XQ*I)/G<^_M[O7_T=NVM>] MA6?- ?CJ+'1#$Y8X/'L)2S M PWG+Y7\+W<8P?!;_B<3,@W?&G(V6,C2J\=,Q,O>Z\CEU;R5<0ME,:5O<.*. M)\8KJO_#2/['1\U_ U!+ P04 " !.@9E891#6#&D" !Y!P $0 '-P M'-DS57);MLP$+W[*UB=2RVTG-1"[ !-$*" NR!-T-P* MFAK91"12):G8^?N0M A'V1H#/=07CV;>FWVDD]-M4Z,[4)I+,8NR.(T0""9+ M+E:SZ/KJ G^*3N>CT:#>!.(9L&%(/8"HFK.,W))$+4&,67G8$+VYISJ&A7FUG4B3\=K7G%H;1] MK\%U=@!X9#94K<[3:]K6RXJN5-8E4N\"-E? M0A5.YMD=O+ B_J^@BBE9_V6?DE;)%I3AH!_?D'>P5E#-(K? .&SM[U9!;#,) MD&7^]B7U!P8>Y;ZT+;.=2P:]'_7']-EX?6;RE0'UBX(UY9 M.^+E+#J3]BL0(:>[OOSRYMO%!]SA@\/@LH2*"^Z7+O6_#.']-P,CSSI)GF*? M>.DTE-_%W,M/!]N3>\@;1$9KUM6'\_9IO4KKE:%__7TEPP/;/3\Z0J_87?9\ M] !02P,$% @ 3H&96&NX.HU$"@ %%@ !4 !S<'-C+3(P,C0P-#(U M7VQA8BYX;6S-G&MOVS@6AK_W5W"S7W:!82U>="O:#KJ9=E%LI@V:%#/8Q<+@ M-1%J2X&L-,F_7TJV$SF6;)*RE46!QK'I\YZ7T:/#0\E^^^O]? 9^JG*1%?F[ M$_0Z. $J%X7,\JMW)]\O/\'DY-?WKUZ]_0N$?_[CVQGXK1"W37 0D,EZ M],EJ^/W6^#O2C#:II)/FU<>ABZQKH F+)G_^?G8AKM6[-H MGCPK!*N:6=^;%^@=4?\&U\-@_11$&!+T^GXA3]Z_ F Y'64Q4]^4!O7/[]\^ M]TJFDWK$)%=7]=_V7)59(2\J5E9GC*N9R;Z)5CWBVN67ZDO;*ZF M2<@UXXF&$=<24A(RR(64,%*,HH1'&"$YK1Z/Z:G*X?>+M7RCL5O@Q,%9U4-H MJ1;%;2F6MGLF"8+L1%X5A?IHGSN MI!![G3P=] MCI;&Q4.+U5?%S8MYJ[&!2/X#U@^98[PTXV?HK?"C76;)2[)FR MU8B)*,SZXZ:"&[.GRV)N9Z@**4JS9JRPT#G880PO\RJF9IR MS)%(>0*Y0@I221#D. YAPC1*@Q K(5-7K-;!CXQ4HP$*#1#^&_\[6*N[,_4X M&?8\^5AT8\G5G1=,SVT, NDQV.@0/;?1!=#6&'=X_C!Q3 $[+>;SVSQ;=A2+ MJ9*:I:G2$.LTA#0R)8I)BJ$R%8GIQ" E0UN".A6.C-%*$VR*VE/4/2O[41KL MU8TG1YM...VTXL54=\31P-IIJ$W7[H'NB-6-^NS\NLC5E]LY5^54J#C0,48P MT@I#BGD,642XX4P'A,0Q2A/K^O0\^)'!:N1 HP>6@O90;S*4LBIA4S"SB"!:2!H) ' M40HU%D%(.>4$)[:\;$0^]F)NJ0668O:@;+K?3XFW)\?5FYT=)SPZ4_=B8S/2 M:&!T&FA3T3W '8F/>656?)]S490W1=D4I8N*5>JTN,VK\N&TD&HJJ5):UCL@ M2B)(:9)"EL8!)(*2,(@98ZFR!<5"[\CX+#, &RG\ IHDS*R!52*@SL2>+9MI MW$_<@2?'C<-#S(L3I YNO="UB3\:T YFVYB[O,T7_@]2FL-BT<3]6IZ7Q<_, MV)EJ%L::: 4E%J99PRB"'-$ JC0(HBA,S&K2NEG;)30.[BOMU@&]UG>%O&>Z M;.D>/@E>6'OX]X!YM[D!%/<$'AG?W?:VN=TSWAW8\U+5_:,R4>JKW9\7BUM5 M7M87"LJO6IO>)V0Q"1GB,$(JAE0DS*QI60)UDF*=X"C64MA"NT_LR. :>2A: M^F"9 %AF )H4[-G=.W/[^3WD?+@Q/&@JG#"V]>B%\M[@H^%L:[.-M/5[W+%> MW[WR>,'V-W/"F*8\%B+"I@"CE$/*$8-)H@A,:4 2JBF.-;-EN5/AR _WI.S M% 5&%=2R]M!VS\M^4@>[=''8'7$T^'8::A.W>Z [9J?%3U5^ MX(NJ9**R.(PVQA_O\&EDP'_60O\]S&'3F;S7X;(9:;3#I-- ^_#H'N#;!7V< MJ_(JRZ_^619WU;4YT]^P_&%JNAXB>1C!&-6W4C!S-N9<,FC.P%J&.#%KK<"M M">K4&:<'6DN#I398B;LV0-TS9=O_#/;OU?ZX6O?H?78:&]#Z=,<=N?/9:6Z[ M\=D]?'#?TUZWJT@AP90V?0Y"D.J PC3B,0R1$F&:1.9?[-GQO&"OEO-&-=KP^\(G5>+"HV^W=VTQP<7"ID:D>]$U;7%6V:,D8-'2@,2!A* MA!6W!J-?9N2K44MM8,2]+CAW3I1M)S;4OEB&^OV&]"NACSWG7=Z\=IL;B<^:(^Y"33ZUG([_:X=Y8W7?:O4J0E4 MLMEGTT?=_TL]3 DF"H4D@&8!5W_L*DIA(DD"DQ!3R0F7 ;>^_[9389S:M!(% MC2HPLJY%Z?F\V-:C 6Z]2I&]48\:U&-F0/EY'G'DRM-C:+OH] UTQ^R#0576 MN'Z:L:MIS 62-*%F;J19_R&!("8AC0BCEW14_!QZDVMY_RACZUYL"TR?NZ\ZHN-,8_*LNU@ M0%%I!1NYGFS;V"XE'6,&;BG4VQ1?R\OB+I^F(J4ABR2,9+VI@&D 4QXS&!*= M),RLWB)D74]Z-$;>3&BVK8H2U-*>.PFM^7'<1O!S/6P/PM MF"^S=;!MJG??H&.H+WZ7[/ZS-.4OTZM//JY.VSR,4AJD(8RUB""E:0Q3S1,8 MDP!)4:_XHL@-PAZE<5 TXF!3W;.R]8&0-H7>614 M]QCTRUEM+.P\;K+CJ=MX$G?:V1<.+@<2IQ2I@>C8_O9[2%M-'-M;UM2,F1== M*)#GX']^!' .H3<_W*RKV6=(V[*IW\[9(9W/H/9-*.OEV_FOE^^)GO]P?'#P MYA^$_/[OC^>S'QM_M8:ZG9TFL"V$V779KF;M"F:_->F/\K.=752VC4U:$W+< MGW;:;&Y3N5RU,TZYW#7;_9J.A(S2YQ((T"PGDLM ;)229-%3SJ53S)A_+8\" MQ6;<4^(Y9T0J"\1ZPTC@G"L(@DH6^XM69?W'4??B[!9FV+UZVW]].U^U[>9H ML;B^OCZ\<:DZ;-)RP2D5BUWK^7WSFT?MKT7?&ETQB_[7/YMNRZ<:XF79XO>? MSS_Y%:PM*>MM:VO?&=B61]O^X'GC;=NK_I=^S9YMT7TCNV:D.T08)X(=WFS# M_/A@-KN3(S45?(0XZ]Y__7CVP.1VL_7->@W)PR%^6'1M%J<-,H'>]F>WMQMX M.]^6ZTT%NV.K!!&/X;FD"RN57'4V_WEWXN*+Z4V"+?+2=_4<#]R?WUEYD1MP MTT(=X*YW.R-5XQ\TJCIMFS_/K*R#JC]:!"B+_JHG;MLFZ]LB&H@BY(;0'"B1 M-@2BO0;"C).6<4:9LP][W7F]1;?[4&S!'RZ;SPN\,(:$B^Y#)XGHY7AD[DZ: ME_F]N_;QM/!=$*VI(M+G@,M=<*C_*[:^M/?3ZZY">)#]K M4H"$@\?.G$W^47@?8GO?8K&Q"2]$_*JLPN[LF)KU/F+5-GM0[BXLZ.Y\AKV. MD!*$\[NH/-NYOFU6W9WGZ$9=DI4;>_V#44UG)E (=] MKPTG4EM.;&8TR;E3/&A(*:+PF@E)T'"&:[3TJ9)O?"?4'\X M;:[J-MV>-@$*9ZVD(LL(V#P2"=H2EWM+% -CO;<>E-L#&/_7B4&FFQ,]-5X$HS+.Y!X8^6)Q$!!JZD"\ M4,%)1/_2WIP%U*J,Y5WZ<=\1'J70F?#H/B95TB'+VE*'+S$+V!7/ /: PC/F M!W&139V+?6@["4A.0L 0;"\:S%JK_Y:;NX$.XQ >^=3Q&*WJE-BX?\.,'E@1-./I^5S6'@IA@LB<#<2:3..LB.FW,\\#!1?V1\<7P\/ F'"I!\+6U8=&?<)'SQ=*]!8$0&Z8B.+!+*K=;&>$Y%'(7"8YO#.)APL7*DC*\, MP46"CF# ]6S_Y+9[Z)\^1/2C")%A1_)NJX/+4!"&23* ("I&XS57RKMQ9>OG M;0^#8L*5RCW).BTXSK;;*TA?]\4'3)(ME9@:"YS[)")O43 ,) MR",/AH$RX9KE7B5^[0D%_!5.BK<(]F795E#@^C3 FO5$Y(Y%RG.,, M&&(L9-@=QWQT40DY;E?$4U:'[9R:<+%QM)23*#*^6T-:(LK_2&%?F8\37.&$ M;I7SOK++@EK(*:Y\B=0Z$.F4Z'::'"]N8GN"UT9GDT(2<5%9&,Z[>_*39811, MN/HX7LR]T?!F\4C$0< !$ M ( !=SL '-P'-D4$L! A0#% @ 3H&9 M6&NX.HU$"@ %%@ !4 ( !#SX '-P XML 19 spsc-20240425_htm.xml IDEA: XBRL DOCUMENT 0001092699 2024-04-25 2024-04-25 false 0001092699 333 South Seventh Street Suite 1000 Minneapolis MN NASDAQ 8-K 2024-04-25 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