
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | |||||||||||||||||||||||||||||||||||||||||
| Market cap | $130,043 | $95,516 | $120,813 | $115,405 | $108,399 | $121,808 | $96,125 | $78,506 | $85,712 | $62,280 | $47,155 | $85,137 | $104,243 | $107,414 | $94,078 | $140,514 | $94,970 | $42,250 | $163,382 | $85,740 | $75,700 | $49,742 | $46,422 | $33,161 | $32,661 | $29,135 | $39,287 | $19,064 | $21,585 | $26,689 | $24,604 | $21,952 | $20,384 | $17,248 | $14,596 | $14,329 | $16,631 | $16,631 | $16,631 | $23,383 | $23,383 |
| Enterprise value | $148,962 | $103,249 | $126,187 | $120,944 | $111,819 | $127,623 | $104,918 | $85,263 | $96,654 | $78,659 | $67,969 | $105,825 | $129,484 | $137,774 | $112,296 | $152,727 | $115,833 | $83,134 | $210,513 | $89,527 | $77,561 | $54,570 | $52,843 | $39,385 | $39,199 | $37,964 | $44,382 | $25,590 | $27,468 | $29,808 | $26,734 | $22,577 | $21,120 | $19,007 | $16,545 | $16,360 | $18,819 | $17,539 | $18,408 | $24,982 | $24,562 |
| P/E (TTM) at period end | 13.05× | 8.27× | 12.01× | 9.31× | 5.13× | 12.47× | 12.00× | 5.76× | 9.78× | 13.49× | – | 13.04× | 28.44× | – | 16.15× | 9.81× | 19.49× | 11.49× | 22.34× | 11.53× | 14.52× | 15.09× | 30.78× | 50.91× | 30.27× | 13.12× | 19.03× | 16.32× | 10.71× | 22.23× | 19.54× | 22.94× | 48.01× | 47.58× | 38.05× | 13.86× | 12.50× | 11.85× | 31.21× | 65.66× | 94.04× |
| P/S (TTM) at period end | 2.26× | 1.78× | 2.24× | 2.08× | 1.71× | 2.73× | 2.23× | 1.94× | 2.14× | 1.84× | 1.35× | 1.79× | 2.04× | 2.11× | 1.55× | 2.48× | 2.19× | 0.78× | 5.50× | 3.82× | 3.98× | 3.84× | 5.03× | 3.93× | 4.01× | 2.51× | 3.39× | 1.61× | 1.76× | 3.44× | 3.09× | 6.14× | 4.33× | 3.50× | 2.20× | 1.92× | 1.68× | 1.87× | 1.96× | 3.64× | 5.24× |
| P/B at period end | 2.09× | 1.73× | 2.21× | 2.28× | 2.09× | 2.56× | 2.37× | 1.80× | 1.92× | 1.59× | 1.26× | 1.84× | 2.27× | 2.29× | 1.79× | 2.41× | 2.17× | 2.05× | 6.60× | 4.70× | 4.81× | 4.19× | 4.63× | 4.44× | 4.55× | 2.66× | 3.42× | 1.79× | 1.79× | 3.54× | 3.54× | 4.09× | 4.33× | 4.12× | 3.08× | 2.97× | 4.08× | 4.52× | 5.57× | 9.85× | 11.04× |
| EV / EBITDA (TTM) | 6.92× | 4.79× | 6.26× | 4.85× | 3.24× | 6.05× | 6.62× | 3.93× | 5.22× | 6.79× | 8.23× | 6.53× | 10.60× | 41.90× | 6.32× | 6.60× | 10.59× | 6.08× | 19.70× | 8.54× | 9.39× | 12.13× | 21.12× | 22.05× | 16.10× | 8.79× | 11.74× | 8.03× | 7.27× | 14.05× | 10.19× | 19.36× | 27.46× | 26.55× | 14.94× | – | – | – | – | – | – |
| EV / Sales (TTM) | 2.58× | 1.92× | 2.34× | 2.18× | 1.76× | 2.86× | 2.43× | 2.10× | 2.41× | 2.33× | 1.95× | 2.22× | 2.53× | 2.70× | 1.85× | 2.70× | 2.67× | 1.53× | 7.09× | 3.99× | 4.08× | 4.21× | 5.73× | 4.66× | 4.81× | 3.27× | 3.83× | 2.16× | 2.24× | 3.84× | 3.36× | 6.31× | 4.48× | 3.86× | 2.49× | 2.19× | 1.91× | 1.98× | 2.17× | 3.89× | 5.50× |
| Returns | |||||||||||||||||||||||||||||||||||||||||
| Return on equity | 16.0% | 20.9% | 18.4% | 24.5% | 40.7% | 20.5% | 19.8% | 31.2% | 19.6% | 11.8% | (2.3%) | 14.1% | 8.0% | (6.4%) | 11.1% | 24.6% | 11.1% | 17.8% | 29.5% | 40.8% | 33.1% | 27.8% | 15.0% | 8.7% | 15.0% | 20.3% | 18.0% | 11.0% | 16.7% | 15.9% | 18.1% | 17.8% | 9.0% | 8.7% | 8.1% | 21.4% | 32.6% | 38.2% | 17.8% | 15.0% | 11.7% |
| Return on invested capital | 12.9% | 18.3% | 17.5% | 23.9% | 37.8% | 20.3% | 13.8% | 25.6% | 17.2% | 9.1% | 6.2% | 11.5% | 3.2% | (1.5%) | 10.0% | 20.7% | 8.5% | 9.8% | 9.3% | 30.5% | 28.7% | 16.5% | 6.5% | 2.7% | 6.6% | 10.6% | 11.0% | 6.5% | 9.6% | 8.1% | 13.3% | 9.0% | 6.0% | 4.0% | 6.0% | 18.5% | 16.7% | 21.6% | 15.7% | 12.9% | 14.2% |
| Dividend yield | 4.7% | 7.4% | 5.4% | 10.2% | 14.2% | 5.0% | 10.8% | 6.8% | 5.0% | 4.4% | 8.6% | 4.4% | 3.2% | 2.8% | 2.4% | 1.2% | 0.9% | 4.6% | 0.9% | 3.0% | 1.5% | 1.8% | 1.8% | 2.9% | 2.5% | – | – | 4.5% | 3.3% | 0.4% | – | – | – | – | – | – | – | – | – | – | – |
| Financial health | |||||||||||||||||||||||||||||||||||||||||
| Current ratio | 1.44× | 1.63× | 1.69× | 1.64× | 1.93× | 1.80× | 1.56× | 1.91× | 1.66× | 1.61× | 1.53× | 1.68× | 1.45× | 1.42× | 1.47× | 1.82× | 1.57× | 0.83× | 1.12× | 1.19× | 1.56× | 1.64× | 1.13× | 0.82× | 0.79× | 0.67× | 1.09× | 0.93× | 1.03× | 1.37× | 1.59× | 1.35× | 1.57× | 2.05× | 2.44× | 2.48× | 2.74× | 2.06× | 1.63× | 2.00× | 1.72× |
| Debt / equity | 0.35× | 0.23× | 0.24× | 0.22× | 0.26× | 0.29× | 0.35× | 0.29× | 0.34× | 0.45× | 0.63× | 0.54× | 0.62× | 0.57× | 0.42× | 0.26× | 0.52× | 1.96× | 1.89× | 0.22× | 0.25× | 0.40× | 0.60× | 0.81× | 0.89× | 0.79× | 0.45× | 0.71× | 0.37× | 0.61× | 0.54× | 0.41× | 0.46× | 0.63× | 0.60× | 0.64× | 1.01× | 0.48× | 0.57× | 0.69× | 0.61× |
| Effective tax rate | 29.6% | 25.9% | 27.8% | 30.1% | 26.7% | 32.4% | 37.3% | 23.4% | 30.9% | 24.7% | (136.8%) | 32.0% | 69.2% | (16.7%) | 48.7% | 25.7% | 26.4% | 40.8% | 21.2% | 23.2% | 24.8% | 16.0% | 27.1% | 54.0% | 40.0% | 32.6% | 27.0% | 41.3% | 32.3% | 31.7% | 34.3% | 28.7% | 26.4% | 47.2% | 43.0% | 34.4% | 37.9% | 36.5% | 41.0% | 45.5% | 51.8% |
| Share count | |||||||||||||||||||||||||||||||||||||||||
| Diluted shares outstanding | 1,638 | 1,633 | 1,632 | 1,630 | 1,629 | 1,629 | 1,642 | 1,732 | 1,800 | 1,809 | 1,825 | 1,859 | 1,858 | 1,849 | 1,936 | 1,972 | 1,770 | 1,901 | 1,563 | 1,614 | 1,656 | 1,672 | 1,668 | 1,668 | 1,668 | 1,662 | 1,658 | 1,683 | 1,668 | 1,668 | 1,690 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 2,345 | 2,345 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | ||||||||||||||||||||||||||||||||||||||||||
| Revenue | $61,793 | $57,638 | $53,658 | $54,041 | $55,554 | $63,495 | $44,611 | $43,165 | $40,522 | $40,030 | $33,781 | $34,829 | $47,664 | $51,171 | $50,967 | $60,537 | $56,576 | $43,411 | $54,264 | $29,700 | $22,465 | $19,033 | $12,954 | $9,228 | $8,447 | $8,152 | $11,598 | $11,584 | $11,848 | $12,290 | $7,758 | $7,966 | $3,577 | $4,710 | $4,926 | $6,646 | $7,459 | $9,878 | $8,880 | $8,482 | $6,424 | $4,464 |
| Cost of revenue | ($45,208) | ($41,428) | ($23,378) | ($36,743) | ($21,284) | ($18,561) | ($15,485) | ($16,412) | ($16,559) | ($15,807) | ($15,530) | ($16,819) | ($19,704) | ($16,674) | ($16,624) | ($36,260) | ($36,667) | ($33,818) | – | – | – | – | – | – | ($4,160) | ($3,647) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Gross profit | $16,464 | $16,210 | $30,280 | $17,298 | $34,270 | $44,934 | $29,126 | $26,753 | $23,963 | $24,223 | $18,251 | $18,010 | $27,960 | $34,497 | $34,343 | $24,277 | $19,909 | $9,593 | – | – | – | – | – | – | $4,287 | $4,505 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Operating expenses | ||||||||||||||||||||||||||||||||||||||||||
| Research and development | – | ($524) | ($398) | ($245) | ($76) | ($65) | ($45) | ($45) | ($45) | ($58) | ($60) | ($104) | ($112) | ($231) | ($129) | – | – | – | ($1,134) | ($574) | ($283) | ($20) | ($16) | ($23) | ($25) | ($39) | ($58) | ($70) | ($88) | ($130) | ($91) | ($93) | ($141) | ($124) | ($77) | ($103) | ($98) | ($85) | ($56) | ($72) | ($59) | ($50) |
| Selling, general and administrative | – | ($2,751) | ($2,942) | ($8,076) | ($7,400) | ($6,757) | ($4,827) | ($5,542) | ($5,764) | ($6,237) | ($4,926) | ($6,346) | ($6,444) | ($7,538) | ($6,187) | – | – | – | – | – | – | – | – | – | ($1,395) | ($1,260) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Total operating expenses | $661 | ($1,274) | ($14,627) | ($2,475) | ($14,337) | ($15,117) | ($12,297) | ($15,287) | ($6,276) | ($10,088) | ($11,456) | ($14,395) | ($16,614) | ($27,067) | ($35,496) | ($10,337) | ($215) | ($2,087) | – | – | – | – | – | – | ($3,456) | ($3,000) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Total costs and expenses | ($44,668) | ($42,702) | ($38,005) | ($39,218) | ($35,621) | ($33,678) | ($27,782) | ($31,699) | ($22,835) | ($25,895) | ($26,986) | ($31,214) | ($36,318) | ($43,741) | ($52,120) | ($46,597) | ($36,882) | ($35,905) | ($44,070) | ($21,129) | ($13,491) | ($12,111) | ($9,627) | ($7,732) | ($7,616) | ($6,647) | ($8,467) | ($9,047) | ($9,859) | ($9,742) | ($6,430) | ($6,003) | ($2,767) | ($4,251) | ($4,458) | ($5,905) | ($5,362) | ($7,668) | ($7,132) | ($7,168) | ($5,435) | ($3,451) |
| Operating income | $17,125 | $14,936 | $15,653 | $14,823 | $19,933 | $29,817 | $16,829 | $11,466 | $17,687 | $14,135 | $6,795 | $3,615 | $11,346 | $7,430 | ($1,153) | $13,940 | $19,694 | $7,506 | $10,194 | $8,571 | $8,974 | $6,922 | $3,327 | $1,496 | $831 | $1,505 | $3,130 | $2,537 | $1,988 | $2,548 | $1,327 | $1,962 | $810 | $459 | $469 | $741 | $2,097 | $2,210 | $1,748 | $1,314 | $988 | $1,013 |
| Earnings | ||||||||||||||||||||||||||||||||||||||||||
| EBITDA | $24,357 | $21,513 | $21,571 | $20,157 | $24,943 | $34,514 | $21,108 | $15,850 | $21,702 | $18,510 | $11,589 | $8,260 | $16,206 | $12,221 | $3,288 | $17,757 | $23,131 | $10,933 | $13,669 | $10,686 | $10,483 | $8,256 | $4,498 | $2,502 | $1,786 | $2,434 | $4,317 | $3,781 | $3,187 | $3,780 | $2,122 | $2,624 | $1,166 | $769 | $716 | $1,108 | – | – | – | – | – | – |
| Interest income | $410 | $465 | $514 | $536 | $179 | $64 | $141 | $300 | $249 | $141 | $89 | $52 | $64 | $82 | $116 | $115 | $163 | $120 | $204 | $134 | $106 | $82 | $28 | $30 | – | – | $89 | $141 | $224 | $276 | $241 | $159 | $105 | $93 | $117 | $182 | $305 | $262 | $110 | $56 | $54 | $62 |
| Interest expense | ($947) | ($1,062) | ($763) | ($967) | ($335) | ($243) | ($268) | ($554) | ($552) | ($848) | ($1,111) | ($750) | ($1,031) | ($876) | ($692) | ($850) | ($778) | ($929) | ($1,618) | ($538) | ($160) | ($173) | ($15) | ($298) | ($291) | – | ($437) | ($443) | ($497) | ($477) | ($291) | ($173) | ($106) | ($139) | ($155) | ($283) | ($401) | ($438) | ($164) | ($163) | ($109) | ($127) |
| Pre-tax income | $17,144 | $14,568 | $15,615 | $13,785 | $18,662 | $30,833 | $15,391 | $11,119 | $18,167 | $12,816 | $6,343 | ($726) | $9,552 | $3,505 | ($2,568) | $13,214 | $20,577 | $7,860 | $9,178 | $9,836 | $10,240 | $7,312 | $3,863 | $2,094 | $1,312 | $1,797 | $3,697 | $3,269 | $2,513 | $3,425 | $1,897 | $2,200 | $1,441 | $643 | $790 | $814 | $1,696 | $1,772 | $1,584 | $1,150 | $880 | $885 |
| Income tax expense | ($4,237) | ($4,319) | ($4,041) | ($3,832) | ($5,614) | ($8,236) | ($4,991) | ($4,147) | ($4,242) | ($3,965) | ($1,567) | ($993) | ($3,053) | ($2,426) | ($429) | ($6,439) | ($5,296) | ($2,076) | ($3,742) | ($2,090) | ($2,373) | ($1,814) | ($619) | ($567) | ($708) | ($718) | ($1,207) | ($881) | ($1,038) | ($1,105) | ($601) | ($756) | ($414) | ($170) | ($373) | ($350) | ($583) | ($671) | ($578) | ($472) | ($401) | ($458) |
| Net income | $12,102 | $9,966 | $11,552 | $10,058 | $12,392 | $21,115 | $9,769 | $8,010 | $13,638 | $8,762 | $4,617 | ($866) | $6,527 | $3,665 | ($2,990) | $5,826 | $14,324 | $4,872 | $3,676 | $7,312 | $7,438 | $5,215 | $3,297 | $1,508 | $651 | $1,079 | $2,220 | $2,065 | $1,168 | $2,014 | $1,200 | $1,259 | $957 | $425 | $362 | $384 | $1,034 | $1,330 | $1,404 | $533 | $356 | $249 |
| Per share | ||||||||||||||||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $7.38 | $6.08 | $7.07 | $6.17 | $7.60 | $12.96 | $6.00 | $4.88 | $7.88 | $4.87 | $2.55 | ($0.47) | $3.51 | $1.97 | ($1.62) | $3.02 | $7.26 | $2.75 | $1.93 | $4.68 | $4.59 | $3.15 | $1.97 | $0.90 | $0.35 | $1.00 | $1.34 | $1.25 | $0.42 | $1.16 | $0.65 | $0.75 | $0.74 | $0.33 | $0.28 | $0.29 | $0.81 | $1.06 | $1.48 | $0.57 | $0.15 | $0.11 |
| Basic EPS (GAAP) | $7.45 | $6.14 | $7.12 | $6.20 | $7.65 | $13.05 | $6.04 | $4.91 | $7.93 | $4.90 | $2.57 | ($0.48) | $3.53 | $1.98 | ($1.62) | $3.03 | $7.31 | $2.76 | $1.93 | $4.70 | $4.61 | $3.16 | $1.98 | $0.90 | $0.35 | $1.00 | $1.34 | $1.25 | $0.42 | $1.16 | $0.65 | $0.75 | $0.74 | $0.33 | $0.28 | $0.29 | $0.81 | $1.06 | $1.48 | $0.57 | $0.15 | $0.11 |
| Basic shares outstanding | 1,626 | 1,624 | 1,623 | 1,621 | 1,620 | 1,618 | 1,617 | 1,630 | 1,719 | 1,787 | 1,797 | 1,823 | 1,848 | 1,847 | 1,849 | 1,923 | 1,961 | 1,764 | 1,901 | 1,556 | 1,614 | 1,656 | 1,669 | 1,668 | 1,668 | 1,668 | 1,662 | 1,658 | 1,683 | 1,668 | 1,668 | 1,690 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 1,668 | 2,345 | 2,345 |
| Margins | ||||||||||||||||||||||||||||||||||||||||||
| Gross margin | 26.6% | 28.1% | 56.4% | 32.0% | 61.7% | 70.8% | 65.3% | 62.0% | 59.1% | 60.5% | 54.0% | 51.7% | 58.7% | 67.4% | 67.4% | 40.1% | 35.2% | 22.1% | – | – | – | – | – | – | 50.8% | 55.3% | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Operating margin | 27.7% | 25.9% | 29.2% | 27.4% | 35.9% | 47.0% | 37.7% | 26.6% | 43.6% | 35.3% | 20.1% | 10.4% | 23.8% | 14.5% | (2.3%) | 23.0% | 34.8% | 17.3% | 18.8% | 28.9% | 39.9% | 36.4% | 25.7% | 16.2% | 9.8% | 18.5% | 27.0% | 21.9% | 16.8% | 20.7% | 17.1% | 24.6% | 22.6% | 9.7% | 9.5% | 11.1% | 28.1% | 22.4% | 19.7% | 15.5% | 15.4% | 22.7% |
| Net margin | 19.6% | 17.3% | 21.5% | 18.6% | 22.3% | 33.3% | 21.9% | 18.6% | 33.7% | 21.9% | 13.7% | (2.5%) | 13.7% | 7.2% | (5.9%) | 9.6% | 25.3% | 11.2% | 6.8% | 24.6% | 33.1% | 27.4% | 25.5% | 16.3% | 7.7% | 13.2% | 19.1% | 17.8% | 9.9% | 16.4% | 15.5% | 15.8% | 26.7% | 9.0% | 7.4% | 5.8% | 13.9% | 13.5% | 15.8% | 6.3% | 5.5% | 5.6% |