Profiling results ----------------- Total cpu time observed: 5966ms (out of 6128ms) Number of samples taken: 33 (once every 181ms) ======================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ======================================================================= [1] 5966(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [10] 100.0% ----------------------------------------------------------------------- location-do [2] 33.5% ??? [66] 66.5% [2] 1584(26.6%) 0(0.0%) location-do ...h-testversion/src/programs.rkt:64:0 location-do [2] 33.5% loop [11] 33.5% ??? [66] 33.1% ----------------------------------------------------------------------- ??? [66] 100.0% [3] 1584(26.6%) 0(0.0%) approximate9 ...stversion/src/core/taylor.rkt:12:0 loop [12] 60.7% for-loop [16] 19.9% taylor [19] 19.3% ----------------------------------------------------------------------- hash-ref! [31] 100.0% [4] 766(12.8%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:301:23 for-loop [13] 100.0% ----------------------------------------------------------------------- hash-ref! [31] 100.0% [5] 558(9.4%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:291:26 for-loop [14] 100.0% ----------------------------------------------------------------------- loop [105] 100.0% [6] 360(6.0%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [99] 100.0% ----------------------------------------------------------------------- matcher [78] 100.0% [7] 216(3.6%) 0(0.0%) ??? ...ath-testversion/src/core/matcher.rkt:130:11 for-loop [17] 100.0% ----------------------------------------------------------------------- for-loop [96] 100.0% [8] 200(3.4%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [15] 100.0% ----------------------------------------------------------------------- for-loop [96] 100.0% [9] 154(2.6%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [15] 100.0% ----------------------------------------------------------------------- ??? [1] 100.0% [10] 5966(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [18] 100.0% ----------------------------------------------------------------------- loop [11] 26.2% location-do [2] 73.8% [11] 1060(17.8%) 0(0.0%) loop .../eggmath-testversion/src/programs.rkt:73:4 ??? [66] 73.8% loop [11] 26.2% ----------------------------------------------------------------------- approximate9 [3] 100.0% [12] 962(16.1%) 0(0.0%) loop ...gmath-testversion/src/core/taylor.rkt:87:4 ??? [66] 100.0% ----------------------------------------------------------------------- ??? [4] 100.0% [13] 766(12.8%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:304:27 hash-ref! [31] 73.1% ??? [21] 26.9% ----------------------------------------------------------------------- ??? [5] 100.0% [14] 558(9.4%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:291:52 hash-ref! [31] 100.0% ----------------------------------------------------------------------- expand-identifier [9] 43.5% expand-implicit [8] 56.5% [15] 354(5.9%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [20] 100.0% ----------------------------------------------------------------------- approximate9 [3] 100.0% [16] 316(5.3%) 0(0.0%) for-loop ...-testversion/src/core/taylor.rkt:30:18 taylor [19] 100.0% ----------------------------------------------------------------------- ??? [7] 100.0% [17] 216(3.6%) 0(0.0%) for-loop ...estversion/src/core/matcher.rkt:132:15 matcher [78] 100.0% ----------------------------------------------------------------------- profile-thunk16 [10] 100.0% [18] 5966(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [22] 100.0% ----------------------------------------------------------------------- taylor [19] 12.2% approximate9 [3] 18.5% map [38] 31.7% for-loop [16] 37.6% [19] 622(10.4%) 0(0.0%) taylor ...th-testversion/src/core/taylor.rkt:170:0 taylor-quotient [23] 56.1% map [38] 31.7% taylor [19] 12.2% ----------------------------------------------------------------------- resolve+shift28 [15] 100.0% [20] 354(5.9%) 154(2.6%) fallback-loop (unknown source) for-loop [96] 56.5% ----------------------------------------------------------------------- for-loop [13] 100.0% [21] 206(3.5%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:294:19 hash-ref! [31] 100.0% ----------------------------------------------------------------------- for-loop [74] 6.7% run [18] 93.3% [22] 5966(100.0%) 166(2.8%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [24] 60.8% prepare-points-intervals [25] 22.5% ??? [47] 5.3% errors [67] 3.5% eval-errors [27] 3.3% oracle-error [28] 3.2% ----------------------------------------------------------------------- taylor [19] 100.0% [23] 622(10.4%) 0(0.0%) taylor-quotient ...rsion/src/core/taylor.rkt:334:0 simplify [35] 50.8% first-nonzero-exp [26] 49.2% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [24] 4026(67.5%) 0(0.0%) run-improve47 ...estversion/src/mainloop.rkt:346:0 for-loop [29] 88.5% simplify! [43] 11.5% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [25] 1344(22.5%) 0(0.0%) prepare-points-intervals ...n/src/points.rkt:110:0 loop [30] 100.0% ----------------------------------------------------------------------- taylor-quotient [23] 100.0% [26] 306(5.1%) 0(0.0%) first-nonzero-exp ...ion/src/core/taylor.rkt:266:0 hash-ref! [31] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [27] 198(3.3%) 0(0.0%) eval-errors ...th-testversion/src/points.rkt:179:0 for-loop [32] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [28] 192(3.2%) 0(0.0%) oracle-error ...h-testversion/src/points.rkt:188:0 for-loop [33] 100.0% ----------------------------------------------------------------------- run-improve47 [24] 100.0% [29] 3564(59.7%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:365:4 run-iter! [34] 100.0% ----------------------------------------------------------------------- prepare-points-intervals [25] 100.0% [30] 1344(22.5%) 202(3.4%) loop ...e/eggmath-testversion/src/points.rkt:123:4 loop [37] 56.5% ??? [39] 28.4% ----------------------------------------------------------------------- ??? [21] 4.1% for-loop [14] 13.3% for-loop [13] 14.7% first-nonzero-exp [26] 16.0% ??? [36] 19.9% ??? [66] 31.9% [31] 1268(21.3%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 simplify [35] 48.0% ??? [36] 19.9% ??? [4] 18.8% ??? [5] 13.3% ----------------------------------------------------------------------- eval-errors [27] 100.0% [32] 198(3.3%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:181:2 ??? [47] 100.0% ----------------------------------------------------------------------- oracle-error [28] 100.0% [33] 192(3.2%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:189:2 map [38] 100.0% ----------------------------------------------------------------------- for-loop [29] 100.0% [34] 3564(59.7%) 0(0.0%) run-iter! ...th-testversion/src/mainloop.rkt:327:0 gen-series! [40] 44.4% finalize-iter! [41] 39.7% simplify! [43] 9.8% gen-rewrites! [45] 6.1% ----------------------------------------------------------------------- taylor-quotient [23] 19.9% hash-ref! [31] 80.1% [35] 1584(26.6%) 358(6.0%) simplify ...h-testversion/src/core/reduce.rkt:16:0 parse-loop80 [42] 54.8% f67 [44] 22.6% ----------------------------------------------------------------------- hash-ref! [31] 100.0% [36] 810(13.6%) 0(0.0%) ??? ...gmath-testversion/src/core/taylor.rkt:45:15 hash-ref! [31] 100.0% ----------------------------------------------------------------------- loop [30] 100.0% [37] 760(12.7%) 0(0.0%) loop ...ie/eggmath-testversion/src/points.rkt:81:2 ??? [47] 100.0% ----------------------------------------------------------------------- for-loop [33] 29.0% taylor [19] 71.0% [38] 662(11.1%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 taylor [19] 71.0% ??? [46] 29.0% ----------------------------------------------------------------------- loop [30] 100.0% [39] 382(6.4%) 0(0.0%) ??? ...ie/eggmath-testversion/src/points.rkt:106:2 ??? [66] 100.0% ----------------------------------------------------------------------- run-iter! [34] 100.0% [40] 1584(26.6%) 0(0.0%) gen-series! ...-testversion/src/mainloop.rkt:160:0 for-loop [48] 100.0% ----------------------------------------------------------------------- run-iter! [34] 100.0% [41] 1416(23.7%) 0(0.0%) finalize-iter! ...stversion/src/mainloop.rkt:278:0 ??? [49] 100.0% ----------------------------------------------------------------------- parse-loop80 [42] 26.8% simplify [35] 73.2% [42] 868(14.5%) 0(0.0%) parse-loop80 (unknown source) eval-const-expr [50] 73.2% parse-loop80 [42] 26.8% ----------------------------------------------------------------------- run-iter! [34] 43.0% run-improve47 [24] 57.0% [43] 810(13.6%) 0(0.0%) simplify! ...th-testversion/src/mainloop.rkt:224:0 ??? [51] 100.0% ----------------------------------------------------------------------- simplify [35] 100.0% [44] 358(6.0%) 0(0.0%) f67 (unknown source) eval-const-expr [50] 100.0% ----------------------------------------------------------------------- run-iter! [34] 100.0% [45] 216(3.6%) 0(0.0%) gen-rewrites! ...estversion/src/mainloop.rkt:183:0 for-loop [52] 100.0% ----------------------------------------------------------------------- map [38] 100.0% [46] 192(3.2%) 0(0.0%) ??? ...e/eggmath-testversion/src/points.rkt:190:26 ??? [47] 100.0% ----------------------------------------------------------------------- ??? [46] 10.8% for-loop [32] 11.1% .../more-scheme.rkt:261:28 [22] 35.6% loop [37] 42.6% [47] 1786(29.9%) 692(11.6%) ??? .../eggmath-testversion/src/programs.rkt:115:2 ??? [56] 28.4% ??? [57] 22.3% ??? [66] 10.5% ----------------------------------------------------------------------- gen-series! [40] 100.0% [48] 1584(26.6%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:167:7 taylor-alt [53] 100.0% ----------------------------------------------------------------------- finalize-iter! [41] 100.0% [49] 1416(23.7%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [54] 100.0% ----------------------------------------------------------------------- f67 [44] 29.2% parse-loop80 [42] 70.8% [50] 1226(20.5%) 0(0.0%) eval-const-expr ...tversion/src/programs.rkt:118:0 temp85_0 [81] 100.0% ----------------------------------------------------------------------- simplify! [43] 100.0% [51] 810(13.6%) 0(0.0%) ??? ...math-testversion/src/core/simplify.rkt:60:0 egraph-run [55] 100.0% ----------------------------------------------------------------------- gen-rewrites! [45] 100.0% [52] 216(3.6%) 0(0.0%) for-loop ...th-testversion/src/mainloop.rkt:191:11 rewrite-expression-head20 [58] 100.0% ----------------------------------------------------------------------- for-loop [48] 100.0% [53] 1584(26.6%) 0(0.0%) taylor-alt ...h-testversion/src/mainloop.rkt:146:0 for-loop [59] 100.0% ----------------------------------------------------------------------- ??? [49] 100.0% [54] 1416(23.7%) 0(0.0%) for-loop ...estversion/src/core/alt-table.rkt:55:2 atab-add-altn [60] 89.0% errors [67] 11.0% ----------------------------------------------------------------------- ??? [51] 100.0% [55] 810(13.6%) 0(0.0%) egraph-run ...estversion/src/core/eggmath.rkt:51:0 egraph-add-exprs [61] 100.0% ----------------------------------------------------------------------- ??? [47] 100.0% [56] 508(8.5%) 354(5.9%) ??? ...th-testversion/src/syntax/syntax.rkt:214:17 return/no-unsupplied [65] 30.3% ----------------------------------------------------------------------- ??? [47] 100.0% [57] 398(6.7%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-add [63] 50.3% ival-div [64] 49.7% ----------------------------------------------------------------------- for-loop [52] 100.0% [58] 216(3.6%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [62] 100.0% ----------------------------------------------------------------------- taylor-alt [53] 100.0% [59] 1584(26.6%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:152:6 ??? [66] 100.0% ----------------------------------------------------------------------- for-loop [54] 100.0% [60] 1260(21.1%) 0(0.0%) atab-add-altn ...sion/src/core/alt-table.rkt:203:0 errors [67] 75.7% for-loop [72] 12.2% override-at-pnts [73] 12.1% ----------------------------------------------------------------------- egraph-run [55] 100.0% [61] 810(13.6%) 0(0.0%) egraph-add-exprs ...ion/src/core/eggmath.rkt:111:0 ??? [68] 100.0% ----------------------------------------------------------------------- matcher [78] 50.0% rewrite-expression-head20 [58] 50.0% [62] 216(3.6%) 0(0.0%) rewriter ...-testversion/src/core/matcher.rkt:90:2 for-loop [69] 50.0% *rules* [70] 50.0% ----------------------------------------------------------------------- ??? [57] 100.0% [63] 200(3.4%) 0(0.0%) ival-add ...-testversion/src/biginterval.rkt:101:0 bfmul [83] 100.0% ----------------------------------------------------------------------- ??? [57] 100.0% [64] 198(3.3%) 198(3.3%) ival-div ...-testversion/src/biginterval.rkt:155:0 ----------------------------------------------------------------------- ??? [56] 100.0% [65] 154(2.6%) 0(0.0%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 filter [71] 100.0% ----------------------------------------------------------------------- ??? [47] 8.7% location-do [2] 10.6% loop [12] 14.9% ??? [39] 17.7% loop [11] 18.8% for-loop [59] 29.3% [66] 2154(36.1%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [2] 29.3% approximate9 [3] 29.3% sample-multi-bounded [76] 17.7% hash-ref! [31] 14.9% ival-mult [79] 8.7% ----------------------------------------------------------------------- for-loop [54] 11.9% .../more-scheme.rkt:261:28 [22] 15.7% atab-add-altn [60] 72.5% [67] 1316(22.1%) 0(0.0%) errors ...eggmath-testversion/src/points.rkt:201:0 for-loop [74] 76.6% eval-prog [77] 23.4% ----------------------------------------------------------------------- egraph-add-exprs [61] 100.0% [68] 810(13.6%) 0(0.0%) ??? ...math-testversion/src/core/simplify.rkt:73:8 egg-run-rules [75] 100.0% ----------------------------------------------------------------------- rewriter [62] 100.0% [69] 216(3.6%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:92:4 matcher [78] 100.0% ----------------------------------------------------------------------- rewriter [62] 100.0% [70] 216(3.6%) 0(0.0%) *rules* ...-testversion/src/syntax/rules.rkt:666:0 for-loop [96] 100.0% ----------------------------------------------------------------------- return/no-unsupplied [65] 100.0% [71] 154(2.6%) 154(2.6%) filter ...5/collects/racket/private/list.rkt:256:2 ----------------------------------------------------------------------- atab-add-altn [60] 100.0% [72] 154(2.6%) 154(2.6%) for-loop ...stversion/src/core/alt-table.rkt:119:2 ----------------------------------------------------------------------- atab-add-altn [60] 100.0% [73] 152(2.5%) 0(0.0%) override-at-pnts ...n/src/core/alt-table.rkt:138:0 for-loop [80] 100.0% ----------------------------------------------------------------------- errors [67] 100.0% [74] 1008(16.9%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:203:2 .../more-scheme.rkt:261:28 [22] 79.6% ??? [84] 20.4% ----------------------------------------------------------------------- ??? [68] 100.0% [75] 810(13.6%) 0(0.0%) egg-run-rules ...ersion/src/core/simplify.rkt:80:0 for-loop [82] 100.0% ----------------------------------------------------------------------- ??? [66] 100.0% [76] 382(6.4%) 0(0.0%) sample-multi-bounded ...ersion/src/points.rkt:15:0 random-ranges [85] 52.4% for-loop [86] 47.6% ----------------------------------------------------------------------- errors [67] 100.0% [77] 308(5.2%) 0(0.0%) eval-prog ...ath-testversion/src/programs.rkt:83:0 temp85_0 [81] 100.0% ----------------------------------------------------------------------- for-loop [17] 50.0% for-loop [69] 50.0% [78] 216(3.6%) 0(0.0%) matcher ...-testversion/src/core/matcher.rkt:118:2 ??? [7] 50.0% rewriter [62] 50.0% ----------------------------------------------------------------------- ??? [66] 100.0% [79] 188(3.2%) 0(0.0%) ival-mult ...testversion/src/biginterval.rkt:119:0 bfmul [83] 100.0% ----------------------------------------------------------------------- override-at-pnts [73] 100.0% [80] 152(2.5%) 152(2.5%) for-loop ...tversion/src/core/alt-table.rkt:139:22 ----------------------------------------------------------------------- eval-prog [77] 20.1% eval-const-expr [50] 79.9% [81] 1534(25.7%) 0(0.0%) temp85_0 (unknown source) compile15 [87] 100.0% ----------------------------------------------------------------------- egg-run-rules [75] 100.0% [82] 810(13.6%) 810(13.6%) for-loop ...testversion/src/core/simplify.rkt:85:2 ----------------------------------------------------------------------- ival-mult [79] 48.5% ival-add [63] 51.5% [83] 388(6.5%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [88] 100.0% ----------------------------------------------------------------------- for-loop [74] 100.0% [84] 206(3.5%) 206(3.5%) ??? ...7.5/collects/racket/private/for.rkt:1236:14 ----------------------------------------------------------------------- sample-multi-bounded [76] 100.0% [85] 200(3.4%) 200(3.4%) random-ranges ...-testversion/src/common.rkt:171:0 ----------------------------------------------------------------------- sample-multi-bounded [76] 100.0% [86] 182(3.1%) 182(3.1%) for-loop ...ggmath-testversion/src/points.rkt:23:4 ----------------------------------------------------------------------- temp85_0 [81] 100.0% [87] 1534(25.7%) 0(0.0%) compile15 (unknown source) temp91_0 [89] 100.0% ----------------------------------------------------------------------- bfmul [83] 100.0% [88] 388(6.5%) 388(6.5%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ----------------------------------------------------------------------- compile15 [87] 100.0% [89] 1534(25.7%) 0(0.0%) temp91_0 (unknown source) temp118_0 [90] 100.0% ----------------------------------------------------------------------- temp91_0 [89] 100.0% [90] 1534(25.7%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [91] 100.0% ----------------------------------------------------------------------- temp118_0 [90] 100.0% [91] 1534(25.7%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [92] 87.1% dispatch-transformer41 [93] 12.9% ----------------------------------------------------------------------- expand-capturing-lifts [91] 100.0% [92] 1336(22.4%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [95] 53.4% loop [105] 46.6% ----------------------------------------------------------------------- expand-capturing-lifts [91] 24.1% loop [105] 75.9% [93] 820(13.7%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [94] 100.0% ----------------------------------------------------------------------- dispatch-transformer41 [93] 100.0% [94] 820(13.7%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [98] 61.2% loop [105] 20.0% syntax-e [97] 18.8% ----------------------------------------------------------------------- lambda-clause-expander [92] 14.7% for-loop [96] 85.3% [95] 714(12.0%) 0(0.0%) finish-bodys (unknown source) for-loop [96] 100.0% ----------------------------------------------------------------------- fallback-loop [20] 3.1% for-loop [96] 5.3% *rules* [70] 23.2% finish-bodys [95] 68.4% [96] 930(15.6%) 416(7.0%) for-loop (unknown source) finish-bodys [95] 58.5% loop [105] 5.7% for-loop [96] 5.3% expand-implicit [8] 3.1% expand-identifier [9] 1.1% ----------------------------------------------------------------------- apply-transformer52 [94] 24.8% loop [105] 75.2% [97] 622(10.4%) 154(2.6%) syntax-e (unknown source) syntax-e/no-taint [99] 75.2% ----------------------------------------------------------------------- apply-transformer52 [94] 100.0% [98] 502(8.4%) 0(0.0%) apply-transformer-in-context (unknown source) ??? [100] 60.6% parse-lambda [101] 39.4% ----------------------------------------------------------------------- expand-id-application-form17 [6] 43.5% syntax-e [97] 56.5% [99] 828(13.9%) 0(0.0%) syntax-e/no-taint (unknown source) loop [105] 100.0% ----------------------------------------------------------------------- apply-transformer-in-context [98]100.0% [100] 304(5.1%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [102] 100.0% ----------------------------------------------------------------------- apply-transformer-in-context [98]100.0% [101] 198(3.3%) 0(0.0%) parse-lambda ...llects/racket/private/kw.rkt:619:2 t-subst [103] 100.0% ----------------------------------------------------------------------- ??? [100] 100.0% [102] 304(5.1%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [104] 100.0% ----------------------------------------------------------------------- parse-lambda [101] 100.0% [103] 198(3.3%) 198(3.3%) t-subst ...lects/racket/private/template.rkt:651:0 ----------------------------------------------------------------------- ??? [102] 100.0% [104] 304(5.1%) 0(0.0%) syntax->list (unknown source) loop [105] 100.0% ----------------------------------------------------------------------- apply-transformer52 [94] 5.6% syntax->list [104] 10.3% for-loop [96] 18.3% lambda-clause-expander [92] 31.6% syntax-e/no-taint [99] 34.2% [105] 982(16.5%) 0(0.0%) loop (unknown source) gf [106] 34.2% dispatch-transformer41 [93] 31.6% expand-id-application-form17 [6] 18.3% syntax-e [97] 15.9% ----------------------------------------------------------------------- loop [105] 100.0% [106] 828(13.9%) 152(2.5%) gf (unknown source) propagation-apply [107] 43.2% cache-or-reuse-set [108] 19.8% propagation-apply-shifted [109] 18.6% ----------------------------------------------------------------------- gf [106] 100.0% [107] 358(6.0%) 358(6.0%) propagation-apply (unknown source) ----------------------------------------------------------------------- gf [106] 100.0% [108] 164(2.7%) 164(2.7%) cache-or-reuse-set (unknown source) ----------------------------------------------------------------------- gf [106] 100.0% [109] 154(2.6%) 154(2.6%) propagation-apply-shifted (unknown source) -----------------------------------------------------------------------